# capslock-plus turns the Caps Lock key into a modifier

> capslock-plus is an AutoHotkey efficiency tool that repurposes the Caps Lock key as a modifier, so the home row gains a layer of shortcuts for window binding, a launcher bar, a math board, translation and mouse speed control. It is a single entry script over a folder of library files, configured through a settings ini file, and its own readme now points at a successor project called Capslox.

**wo52616111/capslock-plus** — An efficiency tool that provides various functions by enhancing the Caps Lock key into a modifier key.

- Repository: https://github.com/wo52616111/capslock-plus
- Website: https://capslox.com/capslock-plus/
- Stars: 1,314 · Forks: 215
- Language: AutoHotkey
- License: GPL-2.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/wo52616111-capslock-plus

## A key you never use, doing the work of five

capslock-plus is described as an efficiency tool that provides various functions by enhancing the Caps Lock key into a modifier key.

The premise is a piece of keyboard real estate most people have given up on. Caps Lock is a toggle that gets pressed by accident and used deliberately perhaps twice a week, and it sits in the perfect place, under the left pinky, reachable from the home row. Turning it into a modifier gives you a layer of shortcuts that does not compete with the letters.

The features in the library listing show what that layer is used for. There is window binding, so Caps Lock plus a key brings a specific window to the front. There is a qbar, which is the launcher bar. There is CapsLock+Tab, which appears to be a window switcher. There is a Math Board, which the documentation links to a calculation function implemented with the IE engine, so the board evaluates expressions. There is Youdao Translation. There is mouse speed modification, which lets you change the pointer speed on the fly. There is a loading animation shown while the program starts.

So it is a launcher rather than a single shortcut, and the difference matters. A single remapped key is a five minute job with AutoHotkey, and a suite of features with a settings file and a per application keymap is a different amount of work.

The primary language of the repository is AutoHotkey, the licence is GPL-2.0, and the home page is the capslock-plus section of the Capslox site.

## One entry script over a folder of features

The readme explains how the code is arranged, and the table of library files is the clearest description of the project.

CapsLock+.ahk is the entry file, and the library files are in the /lib folder. Each has a stated purpose: lib_bindWins.ahk is window binding, lib_clQ.ahk is the qbar, lib_clTab.ahk is CapsLock+Tab, lib_functions.ahk holds some utilities, lib_init.ahk handles program initialisation, lib_jsEval.ahk is the calculation function implemented by using the IE engine, which the readme says is required by the Math Board and by CapsLock+Tab, lib_json.ahk is a json library, lib_keysFunction.ahk contains all the key functions, lib_keysSet.ahk holds the hotkey layouts, lib_loadAnimation.ahk is the loading animation when the program starts, lib_mathBoard.ahk is the Math Board, lib_mouseSpeed.ahk is the mouse speed modification, lib_settings.ahk loads the settings in CapsLock+settings.ini, and lib_ydTrans.ahk is the Youdao translation.

Two of those entries deserve comment. lib_jsEval.ahk depends on the IE engine, which on a modern Windows means the Internet Explorer component or its replacement, and that is a dependency a tool of this vintage carries. And lib_keysSet.ahk and lib_keysFunction.ahk are separate on purpose: one file holds the layouts, the other the functions bound to them, which is the seam where a custom feature plugs in.

The top level listing shows the rest of the structure. There is a userAHK directory, which is where your own code goes, a language directory for the interface text, a loadScript directory, the entry script itself, and the icon file.

## Running it from source needs AutoHotkey v1.1

The instructions for running the source code are three steps.

First, download and install AutoHotkey, and the readme specifies the version, v1.1.+, which is the legacy branch of AutoHotkey rather than AutoHotkey v2. Second, clone the Capslock+ source code. Third, run Capslock+.ahk.

The version constraint is the one thing to notice. AutoHotkey v2 is a substantial rewrite with different syntax, and this project is written for v1.1. That means the ecosystem of AutoHotkey scripts and hotkey layouts you find elsewhere, most of which are v1, are compatible, and it means the tool is tied to a runtime that is no longer the current release of its own ecosystem.

For a Windows user this is not a blocker, since AutoHotkey v1.1 is still distributed, but it is a constraint worth stating before you spend an evening on it.

There are two branches, and the readme labels them clearly. The master branch is v3.0 and above, and the v2 branch is the 2.x line. The documentation link points at the capslock-plus page on the Capslox site, which is where the current documentation lives.

## Adding a function means honouring a naming rule

The mechanism for extending the tool is documented as a four step procedure, and one of the steps is a convention rather than an action.

First, there is a key function named keyFunc_example2 in demo.ahk that you use as the model. Second, you add a setting under the [Keys] section in CapsLock+settings.ini, in this case caps_f7=keyFunc_example2. Third, you save and reload Capslock+ with CapsLock+F5. Fourth, you press CapsLock+F7 to invoke the function.

The convention is stated right after: in order to avoid calling the internal functions, all the key functions are restricted to start with keyfunc_. So the prefix is a namespace guard, and it is what stops a user defined entry in the ini file from shadowing one of the library's own functions.

That design is a little unusual, and worth thinking about before you build on it. The user function is not registered with the hotkey system directly, it is named in the ini file, and the ini file is reloaded at runtime with CapsLock+F5. So configuration changes take effect without restarting the program, which is the point of the whole design, and the trade is that a custom function has to live in a file that the tool loads at startup, with a name prefix, and the mapping from key to function lives in a separate ini file that is parsed again on reload.

For a user, that is a comfortable arrangement. The library of features is a set of functions, the settings file is the table of what they are bound to, and your own code sits in a directory of its own.

## The Listary example shows what a custom function looks like

The worked example in the readme is the clearest thing in the documentation, because it shows both halves of the mechanism.

The goal is to replace Capslock+Q with Listary, an app launcher, and to add a second feature: fill the selected text into the pop-up text input box. The first step is to copy the code into /userAHK/main.ahk, and the function is written like this:

```ahk
keyfunc_listary(){
    ; Get the selected text
    selText:=getSelText()

    ; Send win+F (the default hotkey of Listary) to activate Listary
    sendinput, #{f}

    ; Wait until Listary is activated
    winwait, ahk_exe Listary.exe, , 0.5

    ; If there is any selected text
    if(selText){
        ; Add "gg " before the selected text to google
        selText:="gg " . selText

        ; Fill the text, and press `home` key to move the cursor to the beginning,
        ; in order to add other keywords if you need.
        sendinput, %selText%{home}
    }
}
```

The second step is to add the setting caps_q=keyfunc_listary() under the [Keys] section in CapsLock+settings.ini, then save, press CapsLock+F5, and it is done.

Three things in that snippet are worth noticing. The function is a user function in the userAHK directory, not in lib, so it survives a library update. It is named with the keyfunc_ prefix, so it is protected from the naming rule. And it uses the existing helpers, getSelText() for the current selection, so a custom function is not starting from scratch, it is a short piece of glue between the tool's utilities and an external application.

The winwait with a timeout of half a second is the detail that makes the example reliable, because it waits for the target window to exist before typing into it, rather than typing into a window that has not appeared yet.

## Capslox is where the work moved

The tip box at the top of the readme is the most important thing in the document, and it changes how you should read everything else.

It says Capslox is the cross-platform successor to Capslock+. Capslock+ enriched the Caps Lock key. Capslox extends that idea across your whole keyboard, to drive cursor, text, windows and clipboards from the home row, with a default keymap that works out of the box and layered shortcuts you can change per app. And it is available on macOS and Windows.

So the relationship is a handoff. capslock-plus is a Windows-only AutoHotkey project that grew a feature set around one key, and Capslox is the cross-platform rewrite of the same idea. The documentation link in the readme already points at the capslock-plus section of the Capslox site rather than at a separate documentation host, which suggests the two are maintained together.

For a new user that changes the recommendation. If you are on Windows and want Caps Lock to do something, you should read the Capslox page first, because it is the same idea with a broader scope and a default keymap that works without configuration. If you are on macOS, capslock-plus is not for you at all, since AutoHotkey is a Windows tool, and Capslox is.

The readme's own framing, that the master branch is v3.0 and above while the v2 branch holds the 2.x line, also suggests an active period of development in the AutoHotkey version rather than a settled tool, and that is what the branch structure is for.

So capslock-plus is worth reading as a well organised example of AutoHotkey structure, a useful Windows utility in its own right, and a project that has handed its idea to something larger.

## Conclusion

capslock-plus is worth adopting if you are on Windows, you have a Caps Lock key you never use, and you are willing to work with an AutoHotkey v1 script and an ini file, because the features it ships, window binding, the qbar, the math board, translation and the custom key function mechanism, are the kind of thing you would otherwise assemble from scattered AutoHotkey scripts. It is the wrong choice if you are on macOS, since the successor exists for that, and it is the wrong choice if you want a maintained project, because the readme itself says work has moved to Capslox. Before you set it up, read the successor comparison at capslox.com, and note that the last push was on 2026-05-30 with no GitHub releases published from the repository.

## FAQ

### What does capslock-plus do?

It is an efficiency tool that turns the Caps Lock key into a modifier key, so the home row gains shortcuts for window binding, a launcher bar, a math board, translation, mouse speed control and any custom key functions the user writes.

### How do I run capslock-plus from source?

Install AutoHotkey v1.1 or later, clone the Capslock+ source code, and run the entry file CapsLock+.ahk. The library of features lives in the /lib folder, and the hotkey layout and settings are loaded from CapsLock+settings.ini.

### How do I add my own function to capslock-plus?

Write the function in the userAHK directory and name it starting with keyfunc_, which is the prefix reserved for user functions so they cannot call the internal ones. Then add the binding, for example caps_f7=keyFunc_example2, under the [Keys] section of CapsLock+settings.ini, save and reload with CapsLock+F5.

### Is capslock-plus still being developed?

The readme points at Capslox as the cross-platform successor to Capslock+, available on macOS and Windows, and the branches are labelled with the master branch on v3.0 and above and a v2 branch for the 2.x line. The last push to the repository was on 2026-05-30 and there are no GitHub releases published from it.

### What licence is capslock-plus released under?

GNU GPL v2, with the LICENSE file at the root of the repository. The project is written in AutoHotkey, and the documentation for it is hosted on the capslock-plus page of the Capslox site at capslox.com.

## Sources

- [Issues](https://github.com/wo52616111/capslock-plus/issues)
- [License: GPL-2.0](https://github.com/wo52616111/capslock-plus/blob/master/LICENSE)
- [Project website](https://capslox.com/capslock-plus/)
- [README](https://github.com/wo52616111/capslock-plus/blob/master/README.md)
- [wo52616111/capslock-plus on GitHub](https://github.com/wo52616111/capslock-plus)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/wo52616111-capslock-plus
