SkillAgentSearch skills...

Colejak

Colemak-DH variant for programming and keyboard-centric navigation. Compatible with ANSI, Lily58, and ZSA-Voyager

Install / Use

/learn @james-orcales/Colejak
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Colejak

Colemak-DH variant optimized for programming and keyboard-centric navigation. Compatible with ANSI, Lily58, and ZSA-Voyager. Colejak repositions symbols and numbers to accessible layers near the home row. This frees the top row for navigation and editing keys, placing arrows, Home, End, and Delete closer to the home position for efficiency across applications.

ANSI

ZSA Voyager

<img width="1761" height="670" alt="lily58" src="https://github.com/user-attachments/assets/194eeb6d-f7c0-4bc3-a02e-0d33b5bce1db" />

Software-Only Remap

Linux (XKB)

[!NOTE] These will overwrite existing destination files. Your original files such as evdev.xml will be saved as evdev.xml.bak

git clone --filter=blob:none --depth=1 https://github.com/james-orcales/colejak
cd colejak
mkdir --parents            $HOME/.config/xkb/rules
mkdir --parents            $HOME/.config/xkb/symbols
cp --suffix=.bak rules/*   $HOME/.config/xkb/rules/
cp --suffix=.bak symbols/* $HOME/.config/xkb/symbols/
<details> <summary>Sway</summary>
input type:keyboard {
    xkb_layout colejak(default)
}
</details> <details> <summary>Gnome</summary>

Search for Colejak in gnome-control-center > Keyboard > Input Sources

</details>

MacOS (Karabiner-Elements)

TODO

Windows

TODO

QMK

Assumes RP2040 microcontroller.

#!/usr/bin/env dash

assert() {
        eval "$*" > /dev/null || { echo "ASSERTION FAILED: $*"; exit 1; }
}

assert test "$(basename "$(pwd)")" = "colejak" 
assert test -d ./.git 
assert command -v curl 
assert command -v git  

qmk_version="1.1.8"
if ! command -v qmk > /dev/null; then
        # Latest versions as of July 18, 2025
        if ! command -v uv > /dev/null; then
                curl --fail --silent --show-error --location https://astral.sh/uv/0.7.22/install.sh | UV_NO_MODIFY_PATH=1 sh || exit 1
                assert command -v uv
        fi
        uv tool install qmk=="$qmk_version" || exit 1
        assert command -v qmk
fi

# This does the same thing as `qmk clone <repo>` which is part of `qmk setup` but doesnt fetch the whole repo history.
export QMK_HOME="$HOME/.config/qmk"
if ! test -d "$QMK_HOME"; then
        echo "qmk repository is not yet installed"
        # Ideally, this should be pinned to a commit sha but recursive submodule cloning works best if everything is pointing at the branch tip
        # https://stackoverflow.com/questions/2144406/how-to-make-shallow-git-submodules
        git clone --depth=1 --recurse-submodules --shallow-submodules https://github.com/qmk/qmk_firmware "$QMK_HOME"
        pushd "$QMK_HOME"
        git remote rename origin upstream
        popd
fi

if ! test -d "$QMK_HOME/keyboards/lily58/keymaps/colejak/"; then
        assert test -d ./qmk/colejak 
        cp -R ./qmk/colejak "$QMK_HOME/keyboards/lily58/keymaps/"
fi

qmk setup || exit 1
qmk config user.keyboard=lily58/rev1 || exit 1
qmk config user.keymap=colejak || exit 1


assert test "$(qmk --version)" = "$qmk_version"
qmk compile || exit 1
assert test -f "$QMK_HOME/lily58_rev1_colejak.uf2" 

echo
echo "Instructions from James:"
echo "     At this point, enter bootloader mode while keyboard is plugged into your computer"
echo "     A new removable storage device will appear. This is your keyboard in bootloader mode."
echo "     Simply copy the file into the storage device and the firmware is automatically flashed."
echo "     Refer to https://docs.qmk.fm/flashing#raspberry-pi-rp2040-uf2"
echo "Opening file explorer"
open "$QMK_HOME"

ZMK

TODO

Application Remaps (Optional)

<details> <summary>Neovim</summary>

Neovim

local override = function(modes, new, default, desc, custom_behavior)
    local behavior = default
    if custom_behavior then
        behavior = custom_behavior
    end

    vim.keymap.set(modes, default, "<nop>")
    vim.keymap.set(modes, new, behavior, { desc = desc })
end

override({ "n", "v", "o" }, "<C-Left>", "b", "Jump previous word")
override({ "n", "v", "o" }, "<S-Left>", "B", "Jump previous whitespace")
override({ "n", "v", "o" }, "<C-Right>", "w", "Jump next word")
override({ "n", "v", "o" }, "<S-Right>", "W", "Jump next whitespace")

override({ "n", "v", "o" }, "<C-Home>", "gg", "Jump first line")
override({ "n", "v", "o" }, "<C-End>", "G", "Jump last line")
vim.keymap.set({ "n", "v", "o" }, "<Home>", "^", { desc = "Jump to first char of current line" })
vim.keymap.set({ "i" }, "<Home>", "<C-o>^", { desc = "Jump to first char of current line" })

override({ "i", "c" }, "<C-H>", "<C-W>", "Kill word before cursor")
vim.keymap.set({ "n" }, "<C-H>", "db", { desc = "Kill word before cursor" })
vim.keymap.set({ "n" }, "<C-BS>", "db", { desc = "Kill word before cursor" })
override({ "i", "c" }, "<C-BS>", "<C-W>", "Kill word before cursor")
vim.keymap.set({ "i" }, "<C-Del>", "<Esc><Right>dwi", { desc = "Kill next word from cursor" })
vim.keymap.set({ "n" }, "<C-Del>", "dw", { desc = "Kill next word from cursor" })
vim.keymap.set({ "n" }, "<S-Del>", "dW", { desc = "Kill to whitespace from cursor" })

override("n", "<BS>", "x", "Kill char before cursor", "<Left>x")
override("v", "<BS>", "x", "Remap x to Backspace")

https://github.com/james-orcales/init.lua

</details> <details> <summary>Alacritty</summary>

Alacritty

[keyboard]
bindings = [
    { key = "Enter",    mods = "Shift",           chars = "\u001B[13;2u"      },
    { key = "Enter",    mods = "Control",         chars = "\u001B[13;5u"      },
    { key = "Delete",                             chars = "\u001B[3~"         },
    { key = "Delete",   mods = "Shift",           chars = "\u001B[3;2u"       },

    { key = "Home",     mode = "AppCursor",       chars = "\u001BOH"          },
    { key = "Home",     mode = "~AppCursor",      chars = "\u001B[H"          },
    { key = "End",      mode = "AppCursor",       chars = "\u001BOF"          },
    { key = "End",      mode = "~AppCursor",      chars = "\u001B[F"          },

    { key = "Left",     mods = "Shift",           chars = "\u001B[1;2D"       },
    { key = "Left",     mods = "Control",         chars = "\u001B[1;5D"       },
    { key = "Left",     mods = "Alt",             chars = "\u001B[1;3D"       },
    { key = "Left",     mode = "~AppCursor",      chars = "\u001B[D"          },
    { key = "Left",     mode = "AppCursor",       chars = "\u001BOD"          },

    { key = "Right",    mods = "Shift",           chars = "\u001B[1;2C"       },
    { key = "Right",    mods = "Control",         chars = "\u001B[1;5C"       },
    { key = "Right",    mods = "Alt",             chars = "\u001B[1;3C"       },
    { key = "Right",    mode = "~AppCursor",      chars = "\u001B[C"          },
    { key = "Right",    mode = "AppCursor",       chars = "\u001BOC"          },

    { key = "Up",       mods = "Shift",           chars = "\u001B[1;2A"       },
    { key = "Up",       mods = "Control",         chars = "\u001B[1;5A"       },
    { key = "Up",       mods = "Alt",             chars = "\u001B[1;3A"       },
    { key = "Up",       mode = "~AppCursor",      chars = "\u001B[A"          },
    { key = "Up",       mode = "AppCursor",       chars = "\u001BOA"          },

    { key = "Down",     mods = "Shift",           chars = "\u001B[1;2B"       },
    { key = "Down",     mods = "Control",         chars = "\u001B[1;5B"       },
    { key = "Down",     mods = "Alt",             chars = "\u001B[1;3B"       },
    { key = "Down",     mode = "~AppCursor",      chars = "\u001B[B"          },
    { key = "Down",     mode = "AppCursor",       chars = "\u001BOB"          },

    { key = "Tab",      mods = "Shift",           chars = "\u001B[Z"          },
    { key = "Back",     mods = "Alt",             chars = "\u001B\u007F"      },

    { key = "RBracket", mods = "Shift",           chars = "\u0002n"           },
    { key = "LBracket", mods = "Shift",           chars = "\u0002p"           },

    { key = "V",        mods = "Control | Shift", action = "Paste"            },
    { key = "C",        mods = "Control | Shift", action = "Copy"             },

    { key = "Equals",   mods = "Control",         action = "IncreaseFontSize" },
    { key = "Minus",    mods = "Control",         action = "DecreaseFontSize" },
    { key = "Minus",    mods = "Control|Shift",   action = "ResetFontSize"    },
]


</details> <details> <summary>Vimium</summary>

Vimium

unmapAll

map h scrollLeft
map <down> scrollDown
map <up> scrollUp
map <s-right> scrollRight
map <s-left> scrollLeft
map <home> scrollToTop
map <end> scrollToBottom
map
View on GitHub
GitHub Stars4
CategoryDevelopment
Updated12d ago
Forks0

Languages

C

Security Score

85/100

Audited on Mar 22, 2026

No findings