Skip to content

Instantly share code, notes, and snippets.

@BrianHicks
Last active March 26, 2018 16:11
Show Gist options
  • Save BrianHicks/26b5c7739d909061f91432bd78897218 to your computer and use it in GitHub Desktop.
Save BrianHicks/26b5c7739d909061f91432bd78897218 to your computer and use it in GitHub Desktop.

Brian's Ridiculous Customizations For Kinesis Advantage 2

I got a Kinesis Advantage 2 recently! It's great! But the stock layout (see appendix) has some problems:

  • I don't like cmd and ctrl being on the tiny buttons. I have to move my hands too much.
  • I don't like escape being in the function row. Needs to be somewhere easier to reach.
  • There are no media or volume keys bound by default.
  • Let's be honest, I never use home, end, page up, or page down. Almost everywhere I need to do those, I use cmd-left, cmd-right, space, and shift-space or readline shortcuts like c-e and c-a. They're easier to reach for me on most keyboards.
  • I really really really want a hyper key. It's easy to get to on most layouts (since the modifiers are all together) but not here. We also don't have a special switch, so we'll have to modify the software. Easy enough, right? (wrong.)

I've ended up with the following layout, which you can load onto your Advantage 2 by opening the v-drive and putting b_qwerty.txt in there. Activate it at hotkey layer "b" (for Brian!)

┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│  + =  │ │ 1 │ │ 2 │ │ 3 │ │ 4 │ │ 5 │          │ 6 │ │ 7 │ │ 8 │ │ 9 │ │ 0 │ │  _ -  │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│  tab  │ │ q │ │ w │ │ e │ │ r │ │ t │          │ y │ │ u │ │ i │ │ o │ │ p │ │  | \  │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
┌ ─ ─ ─ ┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
   cmd    │ a │ │ s │ │ d │ │ f │ │ g │          │ h │ │ j │ │ k │ │ l │ │ ; │ │  ' "  │
└ ─ ─ ─ ┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│ shift │ │ z │ │ x │ │ c │ │ v │ │ b │          │ n │ │ m │ │ , │ │ . │ │ / │ │ shift │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
          ┌───┐ ┌ ─ ┐ ┌───┐ ┌───┐                      ┌───┐ ┌───┐ ┌───┐ ┌───┐
          │ ` │  emo  │ ◁ │ │ ▷ │                      │ △ │ │ ▽ │ │ [ │ │ ] │
          └───┘ └ ─ ┘ └───┘ └───┘                      └───┘ └───┘ └───┘ └───┘

                               ┌ ─ ┐ ┌ ─ ┐    ┌ ─ ┐ ┌ ─ ┐
                                crl   hyp            esc
                               └ ─ ┘ └ ─ ┘    └ ─ ┘ └ ─ ┘
                         ┌───┐ ┌───┐ ┌ ─ ┐    ┌ ─ ┐ ┌───┐ ┌───┐
                         │   │ │   │  alt      a-`  │   │ │   │
                         │bs │ │del│ └ ─ ┘    └ ─ ┘ │ret│ │spa│
                         │   │ │   │ ┌ ─ ┐    ┌ ─ ┐ │urn│ │ce │
                         │   │ │   │  c-d      c-c  │   │ │   │
                         └───┘ └───┘ └ ─ ┘    └ ─ ┘ └───┘ └───┘

Legend:

Dotted outlines are keys I've changed away from the QWERTY/Mac defaults.

  • crl: ctrl
  • c-d, c-c: ctrl plus that key
  • a-backtick: my system shortcut to bring the terminal into focus
  • hyp: hyper! This is cmd+shift+alt+ctrl plus a single keystroke. No software is dumb brave enough to use this key combo by default, so it's safe to put global hotkeys there. I have a bunch!
  • emo: ctrl-cmd-space, the macOS system emoji picker default shortcut.

In addition:

  • F9: hyper-s, which opens my quick music switcher in Alfred.
  • F10: pause/play
  • F11: previous track
  • F12: next track
  • F13: mute
  • F14: volume down
  • F15: volume up

Updates

  • 2017-11-16: Hey guess what? If you mess around with keys the firmware can get in an inconsistent state until you cycle power to the keyboard by unplugging it. When I created these, it apparently thought that lalt was lctrl. So I had to change lalt back. Odd.
  • 2017-11-17: because of the last fix, rebinding home to lalt was triggering the hyper macros. Now it's ralt, which does what I want.
  • 2017-11-20: Add missing hyper-space and hyper-enter bindings. How could I have forgotten those? They're literally my favorites!
  • 2017-12-04: Swap ctrl and cmd. I think they're more or less equivalent, but I use ctrl a lot more so it's nicer to have on the home row.

Problems

  • I want the top left key in the left thumb cluster to be c-g (a handy Emacs companion to esc). But I can't make the keybinding stick! Something about it being a modifier key, maybe. I've noticed the firmware version I'm using seems to have some hangups about reassigning regular keys to modifier keys in macros and vice versa.

Appendix: Factory Layout (QWERTY/Mac mode)

┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│  + =  │ │ 1 │ │ 2 │ │ 3 │ │ 4 │ │ 5 │          │ 6 │ │ 7 │ │ 8 │ │ 9 │ │ 0 │ │  _ -  │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│  tab  │ │ q │ │ w │ │ e │ │ r │ │ t │          │ y │ │ u │ │ i │ │ o │ │ p │ │  | \  │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│ caps  │ │ a │ │ s │ │ d │ │ f │ │ g │          │ h │ │ j │ │ k │ │ l │ │ ; │ │  ' "  │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
┌───────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐          ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ ┌───────┐
│ shift │ │ z │ │ x │ │ c │ │ v │ │ b │          │ n │ │ m │ │ , │ │ . │ │ / │ │ shift │
└───────┘ └───┘ └───┘ └───┘ └───┘ └───┘          └───┘ └───┘ └───┘ └───┘ └───┘ └───────┘
          ┌───┐ ┌───┐ ┌───┐ ┌───┐                      ┌───┐ ┌───┐ ┌───┐ ┌───┐
          │ ` │ │ § │ │ ◁ │ │ ▷ │                      │ △ │ │ ▽ │ │ [ │ │ ] │
          └───┘ └───┘ └───┘ └───┘                      └───┘ └───┘ └───┘ └───┘

                               ┌───┐ ┌───┐    ┌───┐ ┌───┐
                               │crl│ │alt│    │crl│ │cmd│
                               └───┘ └───┘    └───┘ └───┘
                         ┌───┐ ┌───┐ ┌───┐    ┌───┐ ┌───┐ ┌───┐
                         │   │ │   │ │hom│    │p-u│ │   │ │   │
                         │bs │ │del│ └───┘    └───┘ │ret│ │spa│
                         │   │ │   │ ┌───┐    ┌───┐ │urn│ │ce │
                         │   │ │   │ │end│    │p-d│ │   │ │   │
                         └───┘ └───┘ └───┘    └───┘ └───┘ └───┘
[caps]>[lctrl]
[F11]>[prev]
[F10]>[play]
[F12]>[next]
[scroll]>[vol-]
[prtscr]>[mute]
[kp=]>[kp=mac]
[pause]>[vol+]
[home]>[ralt]
[kp-lctrl]>[kp-lwin]
[rctrl]>[escape]
[lctrl]>[lwin]
[kp-rctrl]>[kp-rwin]
[kp-rwin]>[kp-rctrl]
{pup}>{-lalt}{`}{+lalt}
{pdown}>{-rctrl}{c}{+rctrl}
{intl-\}>{-lctrl}{-lwin}{space}{+lwin}{+lctrl}
{end}>{-lctrl}{d}{+lctrl}
{lalt}{=}>{-lshift}{-rwin}{-lctrl}{-lalt}{=}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{1}>{-lshift}{-rwin}{-lctrl}{-lalt}{1}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{2}>{-lshift}{-rwin}{-lctrl}{-lalt}{2}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{3}>{-lshift}{-rwin}{-lctrl}{-lalt}{3}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{4}>{-lshift}{-rwin}{-lctrl}{-lalt}{4}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{5}>{-lshift}{-rwin}{-lctrl}{-lalt}{5}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{6}>{-lshift}{-rwin}{-lctrl}{-lalt}{6}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{7}>{-lshift}{-rwin}{-lctrl}{-lalt}{7}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{8}>{-lshift}{-rwin}{-lctrl}{-lalt}{8}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{9}>{-lshift}{-rwin}{-lctrl}{-lalt}{9}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{0}>{-lshift}{-rwin}{-lctrl}{-lalt}{0}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{hyphen}>{-lshift}{-rwin}{-lctrl}{-lalt}{-}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{q}>{-lshift}{-rwin}{-lctrl}{-lalt}{q}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{w}>{-lshift}{-rwin}{-lctrl}{-lalt}{w}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{e}>{-lshift}{-rwin}{-lctrl}{-lalt}{e}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{r}>{-lshift}{-rwin}{-lctrl}{-lalt}{r}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{t}>{-lshift}{-rwin}{-lctrl}{-lalt}{t}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{y}>{-lshift}{-rwin}{-lctrl}{-lalt}{y}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{u}>{-lshift}{-rwin}{-lctrl}{-lalt}{u}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{i}>{-lshift}{-rwin}{-lctrl}{-lalt}{i}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{o}>{-lshift}{-rwin}{-lctrl}{-lalt}{o}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{p}>{-lshift}{-rwin}{-lctrl}{-lalt}{p}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{\}>{-lshift}{-rwin}{-lctrl}{-lalt}{\}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{a}>{-lshift}{-rwin}{-lctrl}{-lalt}{a}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{s}>{-lshift}{-rwin}{-lctrl}{-lalt}{s}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{d}>{-lshift}{-rwin}{-lctrl}{-lalt}{d}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{f}>{-lshift}{-rwin}{-lctrl}{-lalt}{f}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{g}>{-lshift}{-rwin}{-lctrl}{-lalt}{g}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{h}>{-lshift}{-rwin}{-lctrl}{-lalt}{h}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{j}>{-lshift}{-rwin}{-lctrl}{-lalt}{j}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{k}>{-lshift}{-rwin}{-lctrl}{-lalt}{k}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{l}>{-lshift}{-rwin}{-lctrl}{-lalt}{l}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{;}>{-lshift}{-rwin}{-lctrl}{-lalt}{;}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{'}>{-lshift}{-rwin}{-lctrl}{-lalt}{'}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{z}>{-lshift}{-rwin}{-lctrl}{-lalt}{z}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{x}>{-lshift}{-rwin}{-lctrl}{-lalt}{x}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{c}>{-lshift}{-rwin}{-lctrl}{-lalt}{c}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{v}>{-lshift}{-rwin}{-lctrl}{-lalt}{v}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{b}>{-lshift}{-rwin}{-lctrl}{-lalt}{b}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{n}>{-lshift}{-rwin}{-lctrl}{-lalt}{n}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{m}>{-lshift}{-rwin}{-lctrl}{-lalt}{m}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{,}>{-lshift}{-rwin}{-lctrl}{-lalt}{,}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{.}>{-lshift}{-rwin}{-lctrl}{-lalt}{.}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{/}>{-lshift}{-rwin}{-lctrl}{-lalt}{/}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{`}>{-lshift}{-rwin}{-lctrl}{-lalt}{`}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{left}>{-lshift}{-rwin}{-lctrl}{-lalt}{left}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{right}>{-lshift}{-rwin}{-lctrl}{-lalt}{right}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{up}>{-lshift}{-rwin}{-lctrl}{-lalt}{up}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{down}>{-lshift}{-rwin}{-lctrl}{-lalt}{down}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{obrack}>{-lshift}{-rwin}{-lctrl}{-lalt}{obrack}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{cbrack}>{-lshift}{-rwin}{-lctrl}{-lalt}{cbrack}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{space}>{-lshift}{-rwin}{-lctrl}{-lalt}{space}{+lalt}{+lctrl}{+rwin}{+lshift}
{lalt}{enter}>{-lshift}{-rwin}{-lctrl}{-lalt}{enter}{+lalt}{+lctrl}{+rwin}{+lshift}
{F9}>{-lshift}{-rwin}{-lctrl}{-lalt}{s}{+lalt}{+lctrl}{+rwin}{+lshift}
Model> Advantage2
Firmware> 1.0.408.us (2MB), 09/12/2017
Active layout file> b_qwerty.txt
Thumb keys mode> none
Macro play speed> off=0, slow=1, normal=3, fast=9> 9
Status report play speed> off=0, slow=1, normal=3, fast=4> 3
Keyclick status> off
Toggle tone status> off
Stored macros> 56
Keys remapped> 13
Power user mode> on
@nwaywood
Copy link

@BrianHicks thanks for sharing this, it helped me setting up my kinesis.

I am curious, what do you use C-c and C-d for so much to warrant giving them their own bindings?

@BrianHicks
Copy link
Author

@nwaywood Emacs, and EOF. I hardly ever use C-d in practice, but I also haven't cared enough to rebind it yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment