- Notifications
You must be signed in to change notification settings - Fork4
HyperIJKL = Capslock + ijkl Navigation
License
RomanYuldashev/HyperIJKL
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Yet another one productivity-oriented keyboard keys remapper for macOS.
It is largely based onVonng'sCapsLock Enhancement, but with a twist:WASD-style navigation instead of Vim-style.
For those who are more accustomed to arrow keys or FPS controls ᗜωᗜ
This set up is tailored specifically to my workflow and has no aim to cover all possible use cases,though it is easily customizable to your preferences if you like the general idea.
TurnCapslock
into a new modifier –Hyper*
.Do stuff without moving your hands away from the keyboard's home row:
Navigate and edit text quickly
Delete words and lines with a single key press
Navigate macOS: desktops, apps and tabs
Start and switch active apps
Control the mouse pointer, buttons and wheels with a keyboard
... and other workflow enhancements
Expand
macOS
Install Karabiner-Elements:
brew install --cask karabiner-elements
Download the configuration and allow Karabiner to load it;
Enable HyperIJKL in Karabiner-Elements:
Karabiner-Elements → Complex Modifications → Add rule → Enable all
Enjoy!
Several non-essential HyperIJKL features (marked inDescription section) require additionalinstallation steps. SeeAdvanced Installation for instructions.
HoldCapslock
to activateHyper*
mode.
PressCapslock
once to sendesc
.Capslock + esc
to toggle Capslock mode.
* | ⌥ | ⇧ | ⌘ | ␣ |
---|---|---|---|---|
Hyper | option | shift | command | space |
button / layer | * | * ⌘ | * ⌥ | * ⌥ ⌘ |
---|---|---|---|---|
i | up | select line up | paragraph up* | select paragraph up* |
j | left | select character left | word left | select word left |
k | down | select line down | paragraph down* | select paragraph down* |
l | right | select character right | word right | select word right |
u | home | home with selection | line start | select line, cursor home |
o | end | end with selection | line end | select line, cursor end |
y | page up | select previous page | document start* | select up to document start* |
h | page down | select next page | document end* | select up to document end* |
n | delete left (backspace) | delete line left | delete word left | - |
m | delete current line | select current line | move line down | - |
, | delete current word* | select current word* | move line up | - |
. | delete right (delete) | delete line right | delete word right | - |
[ | ( | undo | - | - |
] | ) | redo | - | - |
esc | capslock | - | - | - |
* additional set up required. SeeAdvanced Installation.
Navigate macOS: desktops, windows, tabs, Mission Control and Launchpad.
button / layer | * ⇧ |
---|---|
i | Mission Control |
j | Launchpad |
k | previous tab |
l | next tab |
u | previous desktop |
o | next desktop |
y | fullscreen |
h | hide current window |
Use keyboard keys to control the mouse pointer, buttons and wheels.
button / layer | * ⇧ | * ⌥ ⇧ |
---|---|---|
i | pointer up | wheel up |
j | pointer left | wheel left |
k | pointer down | wheel down |
l | pointer right | wheel right |
u | left mouse button | left mouse button |
o | right mouse button | right mouse button |
h | middle mouse button | middle mouse button |
These shortcuts duplicate some shortcuts fromOS Navigation. Their aim is to grant the abilityto navigate windows and desktops while using a mouse with your right hand at the same time.
button / layer | * | * ⌘ |
---|---|---|
w | next tab | previous tab |
s | next desktop | previous desktop |
x | forward | - |
z | back | - |
These shortcuts launch applications or switch to a desktop with the said application if it is already running.* §
starts multiple apps that are configured inhyperijkl.yml
.§
is placed on top of atab
on ISO (EU) keyboards,replace it with`
to get similar results on ANSI (US) keyboards (seeModifying HyperIJKL).
button / layer | * | * ⌘ | * ⌥ |
---|---|---|---|
e | Outlook | Notes | Thunderbird |
r | IDEA | VSCode | DBeaver |
t | iTerm | Activity Monitor | Settings |
d | Postman | Docker | Lens |
f | Finder | Forklift | Preview |
g | KeepassXC | Spotify | IINA |
c | Telegram | Rocket.Chat | Signal |
v | Zoom | Microsoft Teams | Skype |
b | Chrome | Firefox | Safari |
§ | start work env | - | - |
Press* 1
to center the mouse pointer on Display 1. Works with digits from 1 to 4.
button / layer | * |
---|---|
1 | display 1 |
2 | display 2 |
3 | display 3 |
4 | display 4 |
button / layer | * | * ⌘ |
---|---|---|
; | EN | - |
p | input source (language) 2 | - |
/ | input source (language) 3 | - |
␣ | previous input source (language) | next input source (language) in menu |
Press* ;
to select EN input source.* p
to select the second input source.* /
to select the third input source.* ␣
to select the previous input source (like the default⌥ ␣
in macOS).* ⌘ ␣
to select the next source in the input menu(iterates through the full list of input sources like the default⌥ ⌘ ␣
).
Requires manual set up of additional input sources to work.You will have to edithyperijkl.yml
by replacing predefined input language codes to desired ones.Those input languages should also be configured in macOS.Reinstall the script (seeModifying HyperIJKL)after those steps and check if LANG2 and LANG3 shortcuts work.
* additional set up required. SeeAdvanced Installation.
You can make HyperIJKL work on Login Screen.
Go to:
Karabiner-Elements → Misc
Press
Copy the current configuration to the system default configuration
. You will be prompted for admin password.
You can edit HyperIJKL's shortcuts with the following steps:
Open HyperIJKL/mac/hyperijkl.yml;
Edit shortcuts (seeKarabiner docs for reference);
Run in
mac
directory:make all
Go to:
Karabiner-Elements → Complex Modifications
Delete all the old HyperIJKL's modifications;
Press:
Add rule → Enable all
on newly edited modifications.
Advanced Installation of HyperIJKL allows you to use several additional shortcuts,but requires more complex configuration that involves modifying key bindings in macOS and in IntelliJ IDEA.
Install Karabiner-Elements:
brew install --cask karabiner-elements
Clone HyperIJKL:
git clone https://github.com/RomanYuldashev/HyperIJKL.git
Run installation script in HyperIJKL's
mac
directory:make all
This step automatically sets up
DefaultKeyBindings.dict
in macOS. SeeSetting Up DefaultKeyBindings.dict for details.Enable HyperIJKL in Karabiner-Elements:
Karabiner-Elements → Complex Modifications → Add rule → Enable all
Set up additional IDEA shortcuts (seeSetting Up Additional IDEA Shortcuts).
HyperIJKL requires modification of DefaultKeyBindings.dict for advanced shortcuts to work.If you have no custom key bindings in your macOS — you are good!Otherwise, you will have to manually merge HyperIJKL's key bindings into existing ones.In this case HyperIJKL's advanced installation script will notify you about key bindings conflict.
HyperIJKL utilizes a couple of text navigation actions that are supported by macOS but are rarely recognized by apps.To enable these actions in IntelliJ IDEA you will have to add shortcuts for them either through in-app Settingsor by directly modifying configuration files.
Perform previous steps of HyperIJKL's Advanced Installation;
Go to IDEA configuration directory (directory name may vary between app versions):
cd~/Library/Application\Support/JetBrains/[IntelliJIdea]
If directory
[IdeaConfigBasePath]/keymaps
doesn't exist, copy it from HyperIJKL'smac/idea
directory and paste here;Else go to
keymaps
, openmacOS.xml
with a text editor and paste all the<action>
blocks from HyperIJKL'smac/idea/keymaps/macOS.xml
into it;Go to
[IdeaConfigBasePath]/options/mac
and openkeymap.xml
. Make sure thatactive_keymap
name is aligned with an .xml fromkeymaps
directory:<active_keymap name="macOS" />
Restart IDEA;
Check if these shortcuts work in IDEA:
* ⌥ i
→ move to beginning of paragraph* ⌥ ⌘ i
→ select previous paragraph* ⌥ k
→ move to end of paragraph* ⌥ ⌘ k
→ select next paragraph
Perform previous steps of HyperIJKL'sAdvanced Installation;
Open IntelliJ IDEA;
Go to:
Settings → Keymap → Find
Add these shortcuts:
Move Caret Backward a Paragraph →
* ⌥ i
Move Caret Backward a Paragraph with Selection →
* ⌥ ⌘ i
Move Caret Forward a Paragraph →
* ⌥ k
Move Caret Forward a Paragraph with Selection →
* ⌥ ⌘ k
Author: Roman Yuldashev (RomanYuldashev@proton.me)
License:Apache 2.0 License
ᗜˬᗜ
About
HyperIJKL = Capslock + ijkl Navigation