Custom Kinesis Advantage 2 keyboard configuration for Workman Dead layout

This is my configuration of the Workman Dead layout for the amazing Kinesis Advantage 2 keyboard.

If you don't get this keyboard for the ergonomics, definitely get it for its hugely powerful built-in key layout and macro configuration. It's the best you'll find anywhere.

Big shout-out to Ricky at Kinesis tech support, who promptly replied to my (numerous and newbie) emailed questions with in-depth answers and examples. He helped me figure out a broad strategy for using Advantage 2 configurability to implement Workman Dead.

Entire configuration and writing this post took about 7 hours.

I've implemented a slight modification on the "canonical" Workman Dead layout. The main differences are:

  1. I moved the dead+option keys to the left side of the keyboard.
  2. I added missing multi-key combinations to the dead+option key set.
  3. Pressing ⌥ (option) does not enter the numeric keypad state. I'll get around to configuring this eventually and post an update.

Advantage 2 layout

I made the following image with this awesome tool: keyboard-layout-editor.com

Key legends
Top-left: normal action
Center: dead mode action
Bottom-right: dead + shift action

Advantage 2 v-drive layout configuration file

Details on Advantage 2 v-drive, key mapping, macro mapping, and layout file syntax here.

I wrote most of the layout configuration by hand, directly editing the v-drive layout file. When I ran into problems, I switched from editing the layout file to using the keyboard to generate changes to the layout file. Then I would examine the layout file directly in a text editor to see the syntax generated. That, for example, is how I figured out that the location code for the upper enter key in keypad mode is kpentry1 not kpentry.

Instead of directly creating a file on the v-drive that contains the following configuration, you should follow the user manual instruction to use the keyboard to create the file as a "hotkey layout". Then you can open up the v-drive and paste the configuration into the file. Note that the user manual contains additional instructions about "conditioning" files when copying and pasting. It didn't apply to me so I merely glanced over it. But it may be relevant to you.

This is my w_qwerty.txt v-drive layout file:

[scroll]>[shutdn]
[kp=]>[kp=mac]
[lctrl]>[lwin]
[kp-lctrl]>[kp-lwin]
[rctrl]>[rwin]
[kp-rctrl]>[kp-rwin]
[rwin]>[rctrl]
[kp-rwin]>[kp-rctrl]

****** Workman ******

[w]>[d]
[e]>[r]
[r]>[w]
[t]>[b]
[y]>[j]
[u]>[f]
[i]>[u]
[o]>[p]
[p]>[;]
[d]>[h]
[f]>[t]
[h]>[y]
[j]>[n]
[k]>[e]
[l]>[o]
[;]>[i]
[c]>[m]
[v]>[c]
[b]>[v]
[n]>[k]
[m]>[l]

******* Dead mode ******

* Dead mode toggle

[,]>[kptoggle]

* Dead keys

{kp-q}>{-lshift}{5}{+lshift}{kptoggle}
{kp-w}>{-lshift}{7}{+lshift}{kptoggle}
{kp-e}>{-lshift}{/}{+lshift}{kptoggle}
{kp-r}>{-lshift}{=}{+lshift}{kptoggle}
{kp-t}>{-lshift}{2}{+lshift}{kptoggle}

{kp-y}>{-lshift}{4}{+lshift}{kptoggle}
{kp7}>{-lshift}{hyphen}{+lshift}{kptoggle}
{kp8}>{obrack}{kptoggle}
{kp9}>{cbrack}{kptoggle}
{kpmin}>{-lshift}{1}{+lshift}{kptoggle}

{kp-a}>{/}{kptoggle}
{kp-s}>{-lshift}{9}{+lshift}{kptoggle}
{kp-d}>{=}{kptoggle}
{kp-f}>{0}{kptoggle}
{kp-g}>{-lshift}{obrack}{+lshift}{kptoggle}

{kp-h}>{-lshift}{cbrack}{+lshift}{kptoggle}
{kp4}>{1}{kptoggle}
{kp5}>{-lshift}{8}{+lshift}{kptoggle}
{kp6}>{-lshift}{0}{+lshift}{kptoggle}
{kpplus}>{hyphen}{kptoggle}

{kp-z}>{6}{kptoggle}
{kp-x}>{7}{kptoggle}
{kp-c}>{8}{kptoggle}
{kp-v}>{9}{kptoggle}
{kp-b}>{-lshift}{\}{+lshift}{kptoggle}

{kp-n}>{\}{kptoggle}
{kp1}>{2}{kptoggle}
{kp2}>{3}{kptoggle}
{kp3}>{4}{kptoggle}
{kpenter1}>{5}{kptoggle}
{kp.}>{5}{kptoggle}

* Space key outputs comma in dead mode

{kp0}>{,}{kptoggle}

****** Dead shift ******

* Right shift is the same as left shift in dead mode

[kp-lshift]>[kp-rshift]

{kp-rshift}{kp-w}>{hyphen}{hyphen}{kptoggle}
{kp-rshift}{kp-e}>{hyphen}{-lshift}{.}{+lshift}{kptoggle}
{kp-rshift}{kp-r}>{-lshift}{=}{=}{+lshift}{kptoggle}
{kp-rshift}{kp-a}>{-lshift}{,}{+lshift}{=}{kptoggle}
{kp-rshift}{kp-s}>{-lshift}{1}{+lshift}{=}{kptoggle}
{kp-rshift}{kp-d}>{=}{=}{kptoggle}
{kp-rshift}{kp-f}>{-lshift}{.}{+lshift}{=}{kptoggle}
{kp-rshift}{kp-z}>{-lshift}{1}{+lshift}{=}{=}{kptoggle}
{kp-rshift}{kp-x}>{hyphen}{=}{kptoggle}
{kp-rshift}{kp-c}>{-lshift}{=}{+lshift}{=}{kptoggle}
{kp-rshift}{kp-v}>{=}{=}{=}{kptoggle}