Skip to content

Swift 5 implementation of Karabiner's Homerow and Tab modes

Notifications You must be signed in to change notification settings

franciscolourenco/octopus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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:

  • Directional keys: JKLI -> LeftDownRightUp

  • Editing:

    • Y -> ⌘ Delete
    • U -> Delete
    • O -> Space
    • P -> Forward Delete
  • Undo / Redo:

    • H -> Z
    • N -> ShiftZ
  • Return / Escape

    • ; -> Return
    • ' -> Esc
  • Left hand, modifiers:

    • A -> Shift
    • S -> Control
    • D -> Option
    • F -> Command
    • G -> Hyper
  • Left hand, single press:

    • A -> S (select word under cursor)
    • S -> X (cut)
    • D -> C (copy)
    • F -> V (paste)
    • F -> G (duplicate)

Tab mode

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

  • J/L: switch between apps
  • I/K: switch between windows of the active app
  • U/O: switch betwen tabs
  • Y: close tab
  • ;: new tab
  • ': quit application

About

Swift 5 implementation of Karabiner's Homerow and Tab modes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages