Making the Caps Lock Key Great Again
29 Aug 2025Wasted Keyboard Real Estate
How many times in the past week (or month, or year, or 10 years) have you actually enabled Caps Lock on your computer? For me, that number was close to zero. I can’t remember the last time that I needed to turn on Caps Lock to type something. After all WRITING IN ALL CAPS IS CONSIDERED RUDE, RIGHT? Apolgies for the shouting. I’ll keep it quiet now.
As I got more and more into using the terminal and tools like Vim/NeoVim, I started reading about people who had re-purposed their Caps Lock button into something really useful like “Ctrl” or “Esc.” It seemed like everyone that talked about this had some sort of fancy mechanical keyboard that they re-programmed so that the Caps Lock key could act as “Ctrl” or “Esc.”
I didn’t have a fancy keyboard at the time that I could reprogram, so I looked for answers in the software world. I found a couple of solutions that worked well for me.
- CapsUnlocked: This is a windows tool built from an AutoHotkey script. It does the job very well.
- Keyd: Thisi is a software program for Linux that intercepts keyboard signals, and repurposes them.
I’ll discuss each in a little more detail.
CapsUnlocked - A Solution for Windows
I spent many, many, many year on Windows machines. I worked for a lot of different organizations, and their IT departments were standardized on Windows/Microsoft, and so I learned to use Windows. I got pretty good at it, and along the way, I discovered lots of great tools.
One of my favorite tools on Windows is AutoHotKey or AHK for short. AHK is a very powerful tool that allows you to create keyboard shortcuts, hotstrings, and macros (and honestly, a whole lot more than that) on Windows.
I had/have a very extensive AutoHotKey setup that made working on the computer much more comfortable and allowed me to create shortcuts and macros galore.
One of the scripts in my original AHK was the original CapsUnlocked by Kartik Shenoy (kshenoy). The script intercepts the Caps Lock down action, and if you release the button quickly, it sends the “Esc” signal. If you don’t release it quickly enough, the script acts like a “Ctrl” button.
kshenoy created the original script/exe in AHK version 1, which is now deprecated. Since AHK v1 has been deprecated for a while, and I like to use the currently supported/developed version if I can, I re-wrote the original CapsUnlocked into AHK v2. If you use AHK v2, you can download the script, or if you can downlad the executable file so you don’t have to run the full AHK program.
If you have AHK, then you probably know how to add the Caps Unlocked script to your AHK.
If you don’t have AHK and want to convert your caps lock, just run the .exe file. It will create an icon in the system tray, and will start monitoring your computer for presses to the “CapsLock” key and convert them as needed.
NB: I did create a Pull Request to see if we could get the original updated, and keep credit where credit is due, but that hasn’t happened yet.
Keyd - A Solution for Linux
In recent months/years, I’ve been moving my development tooling away from Windows and more onto Linux. I’ve had a long-time on and off relationship with Linux, but that’s a story for another time. Suffice it to say, I was a Linux server guy, but I ran Windows on my desktop.
As of earlier this year, I decided to pull the trigger and switch my desktop as well. I got a taste of a tiling window manager based on i3 that allowed me to keep my hands on the keyboard a lot more, and I just really fell in love with the tiling window workflow.
Because I had been using Ubuntu on my servers/homelab, I figured I ought to stick with something I was somewhat familiar with. Thus, I installed Ubuntu on my laptop and added i3. I later switched to Regolith with Wayland/Sway, and have been very happy with the experience.
I still don’t have a fancy programmable keyboard, so I still need/want a software based solution for Linux to convert my less than desirable “Caps Lock” key into something more useful. I found Keyd.
Keyd works by intercepting low level signals from the keyboard to send
different signals to the operating system. It is fast, efficient, and (in
my opinion), fairly easy to configure. On my machine, I chose to install
from source (instructions in the README file), and
my configuration in /etc/keyd/default.conf
is pretty simple:
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held.
capslock = overload(control, esc)
I need to spend some more time playing with Keyd and learn more about layers and some of the cool tools available with that, but for now, this is sufficient.
That’s It… Now Caps Lock is useful again.
There you go.
Your Caps Lock key is now useful again. If you have any thoughts about what I could do to improve or have feedback, let me know.