franciscolourenco / octopus

Swift 5 implementation of Karabiner's Homerow and Tab modes
5 stars 2 forks source link

Octopus 🐙

Swift implementation of the Homerow and Tab keyboard remapping modes for macOS. Ergonomics over mnemonics.

Why I built this

Homerow and Tab modes were initially implemented and maintained in the original Karabiner app, which stopped working in 2007 because of the keyboard driver architecture changes in macOS Sierra. Karabiner-Elements was released as a replacement for Karabiner, however it took a long time until Karabiner-Elements supported all the functionality necessary for Homerow and Tab modes to work. Without prospects of seeing Karabiner-Elements support these modes which I relied upon daily for code/text editing, I decided to implement them myself in a dedicated app. The initial implementation was in Objective-C. It was later re-written through different versions of Swift as they were released. Today Octopus implements these modes in a way, which I still don't think is possible with Karabiner-Elements.

Modes

Each mode is active only while the respective activation key is pressed (eg. space / tab). The objective is to increase system-wide speed and comfort of navigation and text manipulation with the keyboard, while minimizing hand movement. Ergonomic key mappings are prioritized over mnemonic ones. This means that the most used actions are placed closer to the homerow mode, and not mapped according to characters that would make them easier to remember.

Homerow mode

For general text editing and manipulation. Active while the Space key is pressed:

Tab mode

For app, window, and tab navigation and management. Active while the Tab ⇥ key is pressed