Giter Site home page Giter Site logo

engelbart's Introduction

What is this?

This is a customized configuration for Karabiner to make a keyboard home row to behave like Douglas Engelbart's chord device but only for "difficult to reach but very useful" keys

At least it's started this way... Later I started to use also the row above and below the home row, all keys far more reachable than the ones they replace

NOTE: Unfortunately this only work in OSX. If you are like me who works in Linux virtual machines hosted by OSX then you can have the best of both worlds.

Why?

  • My development environment is made of Vim, Zsh, Tmux and i3 (a tiled window manager), let's say that I need a lot of key bindings, avoiding clashes with "only" two modifiers (CONTROL and ALT) is not easy
  • I'm not getting younger, twisting my hand and my wrist all day long to reach those modifier keys was causing me some pain
  • Being able to stay more in the home row is the ultimate keyboard efficiency goal

How it works?

When you simultaneously press two keys they will be mapped to another (convenient) key. All the mappings are symmetric (this resolves another issue that many keyboards have)

  • D+F to CONTROL_L
  • J+K to CONTROL_R
  • S+D to OPTION_L (aka META_L in Linux)
  • K+L to OPTION_R (aka META_R in Linux)
  • E+F to ESCAPE
  • J+I to ESCAPE
  • W+F to DELETE
  • J+O to DELETE
  • E+R to Vim's LEADER
  • U+I to Vim's LEADER
  • C+V to CONTROL_L+OPTION_L
  • M+, to CONTROL_R+OPTION_R
  • X+V to CONTROL_L+SHIFT_L
  • M+. to CONTROL_R+SHIFT_R
  • X+C to OPTION_L+SHIFT_L
  • ,+. to OPTION_R+SHIFT_R
  • Z+V to CONTROL_L+OPTION_L+SHIFT_L
  • M+/ to CONTROL_R+OPTION_R+SHIFT_R

Now, this is already something, but I wanted to go beyond, towards the mythical Space Cadet Keyboard, I wanted to have all those modifier keys... Unfortunately Karabiner doesn't support those key codes... Fortunately inside a Linux VM I can (with xmodmap) remap some strange/unused keys into those key codes... There we go

  • S+F to KEYPAD_1 and then via xmodmap to HYPER_L
  • J+L to KEYPAD_2 and then via xmodmap to HYPER_R
  • A+F to KEYPAD_3 and then via xmodmap to SUPER_L
  • J+; to KEYPAD_4 and then via xmodmap to SUPER_R

My Vim's LEADER works the same way

  • C+V to KEYPAD_5 and the via xmodmap to NO_BREAK_SPACE
  • M+; to KEYPAD_6 and the via xmodmap to NO_BREAK_SPACE

I've mapped the Vim's Leader to some strange character that I could never type with a direct key of my keyboard so that I could have leader mappings in insert mode, but that's another story, you could skip this part or you could email me if you wanna know more 😄

How to use it

  • Install Karabiner
  • Go to "Preferences" > "Misc & Uninstall" > "Open private.xml"
  • Replace the default private.xml file with engelbart.xml
  • Go to "Change Key"
  • Hit "Reload XML"
  • A section called "Engelbart" should appear
  • Enable the mappings you want to use
  • Enjoy :-)

Last tip

With Seil I've remapped my CapsLock to Fn key, so that I can have yet another (sort of) modifier key in my home row! What I do with Fn? With Karabiner I've remapped Fn+{H,J,K,L} to... I'll let you guess what :-)

engelbart's People

Contributors

gabrielelana avatar

Stargazers

 avatar lokithus avatar Simplepush Notifications avatar  avatar Drew Herron avatar  avatar Matteo Baglini avatar Diego Guraieb avatar Guilherme Thomazi Bonicontro avatar abjutus avatar Ján Bočínec avatar Atharva avatar Giulio Pietroiusti avatar Wiktor avatar Randy Henry avatar Yasen Atanasov avatar Rafał Łasocha avatar  avatar  avatar  avatar Bogdan Hodorog avatar yqrashawn avatar Wesley Moore avatar Adam McLain avatar AaronS avatar Eugene avatar Alexander Jeurissen avatar Jake Seiden avatar Mark Godfrey avatar Adrian Lanzafame avatar Jay Thompson avatar Greatman Lim avatar Emory L. avatar dvnmk avatar Andrei Dragomir avatar Joe Groff avatar Robert Church avatar Christian Wellenbrock avatar Josh Howe avatar Seb Mondet avatar Sean Levin avatar Karan Dodia avatar Francisco Pinzón avatar Ariel Churi avatar Arialdo Martini avatar  avatar Michael Hood avatar

Watchers

Arialdo Martini avatar James Cloos avatar  avatar Wiktor avatar  avatar

Forkers

hankhjin

engelbart's Issues

Add sticky to chorded modifiers

I was thinking if it's possible to add sticky as an option to newly defined modifiers. I've already tried activating sticky modifiers from OSX System Preferences panel and from within Karabiner ("Sticky modifiers keys). Both are only affecting the default modifiers key (triggered by physical ctrl, opt keys). I've already tried fiddling around with some settings, but my Karabiner voodoo is quite poor, so I was wondering if you know how to add something like that.

One way they could apear in the UI is to have the current items + duplicated items with "sticky enabled".
Obviously having "Show sticky modifiers state" checked in Karabiner/Preferences/Status Message should be respected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.