IntroductionThis layout is built specifically for Windows-based programming and Excel use. It must also be serviceable for general text entry, such as writing emails and Word documents. It does use Vim arrows, which may seem like an odd choice for a Windows layout, but it works for me. My keyboard is a GH60 Satan with US key layout, a blank 1976-style PBT keyset, and MX Clear switches. My goal here is to finalize a key mapping that I can then replicate on another identical board, so that I can preserve muscle memory between home and work. All feedback is welcome.
Edit: I've added a fourth layer, which allows keyboard shortcuts to work during navigation and calculation.Layer keys- Holding space will momentarily activate layer 1. This is for up/down selection in combo-boxes, moving rapidly around text with home/end, and so on.
- Holding tab will momentarily activate layer 2. This is for typing numbers in the general flow of other text. The worst-case scenario for jumping between alpha and numeric is probably chess notation, and I think I could bear to type that in this manner.
- Tapping caps-lock will toggle layer 1, then layer 2, and keep toggling between them. This functionality is intended to be used when surfing the web while in layer 1, or using the calculator while in layer 2. It's not intended to be used for quick-access to arrow keys or numerals.
- Esc will return to layer 0 from the other two layers, when they have been permanently toggled on with caps-lock. Esc was chosen as it generally won't have any negative impact on applications, so if I forget which layer I'm on, I can just bash Esc a few times and get home safely to layer 0.
- Ideally, layers 1 and 2 would stack fully, so that I could be typing a formula in an Excel cell, hold space to arrow-key to the next cell, hold caps-lock to type some numbers, release caps-lock, move to the next cell without ever releasing space, and so on. This would mean I could use the layers without worrying about them clashing. This does not work yet.
- Layer 4 is enabled by pressing the ctrl key during layers 1 and 2. It is necessary so that keyboard shortcuts work.
Layer 0 is general text entry.
Layer 0 special keys- Shift is always on for top-row numeric keys, so symbols are easier to access for programming.
- Tap shift keys for caps-lock, hold for shift. I often have to do short data-entry tasks where the text is all capitals, so keeping caps-lock accessible is important.
- Right-shift actually sends left-shift. Sending right-shift was doing horrible things, like crashing the firmware!
- The Win-key sends Win-R, as 90% of the time I use that combination anyway, usually to start RDP. It would be great if we could send modified keys on tap, while still keeping the modifier on hold, but it seems only unmodified keys can be sent.
- Bottom-right FN4 key is ctrl-alt-delete. This is needed to log in at the start of the day, and can also be used to quickly lock the screen.
- The FN3 key to the left of that is dedicated to grabbing screenshots.
- Esc is tricky, which is tkg.io-speak for "sends '~' on shift-esc".
Layer 1 is the navigation layer. Navigation refers to multiple ideas here. There is navigation within text, within a webbrowser, and within the operating system.
When writing text, both hands will be firmly on the keyboard, but when surfing the web, often the right hand will be on the mouse. This means the functions that the left hand can still access should be the ones that are still useful when mousing, which luckily ties in well with the Vim arrows. I turn off most unused keys, to prevent typos.
Originally I tried to put dedicated keys for manipulating webbrowser tabs here, but it was quite a squeeze. Leaning on left-ctrl and using the standard w/r/t for close/refresh/new tab isn't a hardship.
Layer 1 special keys- Backspace becomes delete. Sometimes you just can't substitute a backspace.
- The top row become the F1-F10 keys. F5 is by far the most important of these to me, so I may put an extra copy of it closer to the home keys.
- Vim arrows are enabled.
- A mirroring set of "big" arrows are enabled for the left hand. These move in the same direction but "more", i.e. home/pgup/pgdn/end.
- 'w' and 'e' move left and right through browser tabs. Good for lazy forum browsing!
- 'u' and 'i' become back and forward.
- 'tab' is ctrl-alt-tab, which allows focusing apps with the arrow keys, which are on the same layer.
Layer 2 is the numeric calculation layer. The right hand acts in-place as a numpad, the left hand has access to basic operations. I tried '0' on 'b' and even 'e' key, but it turned out to be too difficult to remember, so I made it a big target (spacebar!), and put the decimal point closer to where it would be on a regular numpad. Again, most unused keys are explicitly turned off.
Layer 2 special keys- /*-+ on the home keys, for the ultimate easy access.
- The numpad is fairly easy to get used to, but I find I miss the '9' due to the staggering. Either I'll get used to it, or I'll just add another '9' key next to it to prevent frustration.
Layer 3 is a simple set of keys commonly combined with ctrl in keyboard shortcuts. Having this layer triggered on ctrl allows these shortcuts to work during navigation and calculation.
Code for
Keyboard Layout Editor1976 Satan Layer 0 - General Alpha and Symbols
[{c:"#5dceba",sm:"cherry",sb:"cherry",st:"MX1A-C1xx"},"FN7","FN21","FN22","FN23",{c:"#ba1312"},"FN24",{c:"#d83712"},"FN25",{c:"#e1ba44"},"FN26",{c:"#5b3314"},"FN27","FN28","FN29","FN20","_\n-","+\n=",{w:2},"Backspace"],
[{c:"#5dceba",w:1.5},"FN17","Q","W",{c:"#ba1312"},"E",{c:"#d83712"},"R",{c:"#e1ba44"},"T",{c:"#5b3314"},"Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\"],
[{c:"#5dceba",w:1.75},"FN0","A",{c:"#ba1312"},"S",{c:"#d83712"},"D",{c:"#e1ba44",n:true},"F",{c:"#5b3314"},"G","H",{n:true},"J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
[{c:"#5dceba",w:2.25},"FN5",{c:"#ba1312"},"Z",{c:"#d83712"},"X",{c:"#e1ba44"},"C",{c:"#5b3314"},"V","B","N","M","<\n,",">\n.","?\n/",{w:2.75},"FN6"],
[{c:"#5dceba",w:1.25},"LCtrl",{c:"#ba1312",w:1.25},"FN1",{c:"#d83712",w:1.25},"LAlt",{c:"#5b3314",w:6.25},"FN2",{w:1.25},"RAlt",{w:1.25},"RCtrl",{w:1.25},"FN3",{w:1.25},"FN4"]
1976 Satan Layer 1 - Navigation
[{c:"#5dceba"},"FN8","F1","F2","F3",{c:"#d83712"},"F4",{c:"#e86700"},"F5",{c:"#e1ba44"},"F6",{c:"#5b3314"},"F7","F8","F9","F10","no","no",{w:2},"Del"],
[{c:"#5dceba",w:1.5},"FN12","no","FN10",{c:"#d83712"},"FN11",{c:"#e86700"},"no",{c:"#e1ba44"},"no",{c:"#5b3314"},"no","FN14","FN15","no","no","no","no",{w:1.5},"no"],
[{c:"#5dceba",w:1.75},"FN9","home",{c:"#d83712"},"pgup",{c:"#e86700"},"pgdn",{c:"#e1ba44",n:true},"end",{c:"#5b3314"},"no","left",{n:true},"down","up","right","no","no",{w:2.25},"Enter"],
[{c:"#5dceba",w:2.25},"FN5",{c:"#d83712"},"no",{c:"#e86700"},"no",{c:"#e1ba44"},"no",{c:"#5b3314"},"no","no","no","no","no","no","no",{w:2.75},"FN6"],
[{c:"#5dceba",w:1.25},"FN19",{c:"#d83712",w:1.25},"FN1",{c:"#e86700",w:1.25},"LAlt",{c:"#5b3314",w:6.25},"FN2",{w:1.25},"RAlt",{w:1.25},"FN19",{w:1.25},"FN3",{w:1.25},"FN4"]
1976 Satan Layer 2 - Numeric
[{c:"#5dceba"},"FN8","no","no","no",{c:"#d83712"},"no",{c:"#e86700"},"no",{c:"#e1ba44"},"no",{c:"#5b3314"},"no","no","no","no","no","no",{w:2},"Backspace"],
[{c:"#5dceba",w:1.5},"FN17","no","no",{c:"#d83712"},"no",{c:"#e86700"},"no",{c:"#e1ba44"},"no",{c:"#5b3314"},"7\nhome","8\nup","9\npgup","no","no","no","no",{w:1.5},"no"],
[{c:"#5dceba",w:1.75},"FN13","/",{c:"#d83712"},"*",{c:"#e86700"},"-",{c:"#e1ba44",n:true},"+",{c:"#5b3314"},"no","4\nleft",{n:true},"5","6\nright","no","no","no",{w:2.25},"Enter"],
[{c:"#5dceba",w:2.25},"FN5",{c:"#d83712"},"no",{c:"#e86700"},"no",{c:"#e1ba44"},"no",{c:"#5b3314"},"no","no","1\nend","2\ndown","3\npgdn",".\ndel","no",{w:2.75},"FN6"],
[{c:"#5dceba",w:1.25},"FN19",{c:"#d83712",w:1.25},"FN1",{c:"#e86700",w:1.25},"LAlt",{c:"#5b3314",w:6.25},"0\nins",{w:1.25},"RAlt",{w:1.25},"FN19",{w:1.25},"FN3",{w:1.25},"FN4"]
1976 Satan Layer 3 - Alpha Shortcuts
[{c:"#5dceba",sm:"cherry",sb:"cherry",st:"MX1A-C1xx"},"Esc",{a:7},"","","",{c:"#ba1312"},"",{c:"#d83712"},"",{c:"#e1ba44"},"",{c:"#5b3314"},"","","","","","",{w:2},""],
[{c:"#5dceba",a:4,w:1.5},"Tab","Q","W",{c:"#ba1312"},"E",{c:"#d83712"},"R",{c:"#e1ba44"},"T",{c:"#5b3314"},"Y","U","I","O","P","{\n[","}\n]",{w:1.5},"|\n\\"],
[{c:"#5dceba",a:7,w:1.75},"",{a:4},"A",{c:"#ba1312"},"S",{c:"#d83712"},"D",{c:"#e1ba44",n:true},"F",{c:"#5b3314"},"G","H",{n:true},"J","K","L",":\n;","\"\n'",{w:2.25},"Enter"],
[{c:"#5dceba",a:7,w:2.25},"",{c:"#ba1312",a:4},"Z",{c:"#d83712"},"X",{c:"#e1ba44"},"C",{c:"#5b3314"},"V","B","N","M","<\n,",">\n.","?\n/",{a:7,w:2.75},""],
[{c:"#5dceba",a:4,w:1.25},"FN19",{c:"#ba1312",a:7,w:1.25},"",{c:"#d83712",w:1.25},"",{c:"#5b3314",a:4,w:6.25},"Space",{a:7,w:1.25},"",{a:4,w:1.25},"FN19",{a:7,w:1.25},"",{w:1.25},""]
Code for
tkg.io"0":["ACTION_LAYER_ON",1,"ON_PRESS"],"1":["ACTION_MODS_KEY","LR_LEFT",["MOD_GUI"],"KC_R"],"2":["ACTION_LAYER_TAP_KEY",1,"KC_SPACE"],"3":["ACTION_MODS_KEY","LR_LEFT",["MOD_CTL","MOD_ALT"],"KC_PSCREEN"],"4":["ACTION_MODS_KEY","LR_LEFT",["MOD_CTL","MOD_ALT"],"KC_L"],"5":["ACTION_MODS_TAP_KEY","LR_LEFT",["MOD_SFT"],"KC_CAPSLOCK"],"6":["ACTION_MODS_TAP_KEY","LR_LEFT",["MOD_SFT"],"KC_CAPSLOCK"],"7":["ACTION_FUNCTION",0,0],"8":["ACTION_LAYER_CLEAR","ON_PRESS"],"9":["ACTION_LAYER_ON","2","ON_PRESS"],"10":["ACTION_MODS_KEY","LR_LEFT",["MOD_CTL","MOD_SFT"],"KC_TAB"],"11":["ACTION_MODS_KEY","LR_LEFT",["MOD_CTL"],"KC_TAB"],"12":["ACTION_MODS_KEY","LR_LEFT",["MOD_CTL","MOD_ALT"],"KC_TAB"],"13":["ACTION_LAYER_OFF","2","ON_PRESS"],"14":["ACTION_MODS_KEY","LR_LEFT",["MOD_ALT"],"KC_LEFT"],"15":["ACTION_MODS_KEY","LR_LEFT",["MOD_ALT"],"KC_RIGHT"],"17":["ACTION_LAYER_TAP_KEY","2","KC_TAB"],"19":["ACTION_LAYER_MODS","3",["MOD_CTL"]],"20":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_0"],"21":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_1"],"22":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_2"],"23":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_3"],"24":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_4"],"25":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_5"],"26":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_6"],"27":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_7"],"28":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_8"],"29":["ACTION_MODS_KEY","LR_LEFT",["MOD_SFT"],"KC_9"]