From 0e898827ca7fb6dd0f6227085cf896817a2d0620 Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Sat, 6 Aug 2016 20:41:34 -0700 Subject: [PATCH] Initial version of Programmers Dvorak http://www.kaufmann.no/roland/dvorak/ Requires blockKey capability Caveats: 1) Requires US ANSI locale set on host computer 2) AltGr keys aren't working (needs to be based on a different locale) 3) Some shortcuts may not behave correctly due to Shift masking --- layouts/programmers_dvorak_default.kll | 93 ++++++++++++++++++++++++++ layouts/programmers_dvorak_shift.kll | 48 +++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 layouts/programmers_dvorak_default.kll create mode 100644 layouts/programmers_dvorak_shift.kll diff --git a/layouts/programmers_dvorak_default.kll b/layouts/programmers_dvorak_default.kll new file mode 100644 index 0000000..053150a --- /dev/null +++ b/layouts/programmers_dvorak_default.kll @@ -0,0 +1,93 @@ +Name = programmers dvorak default layer; +Version = 0.1; +Author = "HaaTa (Jacob Alexander) 2016"; +KLL = 0.3d; + +# Modified Date +Date = 2016-08-06; + +# This the default layer for programmers dvorak +# http://www.kaufmann.no/roland/dvorak/ +# +# CAVEATS; +# 1) Assumes US ANSI locale set on the host OS +# 2) No AltGr layer (future enhancement, will require a different locale) +# 3) Some shortcuts may not behave correctly +# Shift Keys are masked in some situations +# +# USAGE: +# This layer must be set on the defaultMap +# programmers_dvorak_shift must be set as Layer1 (first PartialMap) + + +# Attempt to force the host OS to use US ANSI +# (Not guaranteed) +keyboardLocale = 33; + + +### Mapping ### + +# Top Row +U"BackTick" : '$'; +U"1" : '&'; +U"2" : '['; +U"3" : '{'; +U"4" : '}'; +U"5" : '('; +U"6" : '='; +U"7" : '*'; +U"8" : ')'; +U"9" : '+'; +U"0" : ']'; +U"-" : '!'; +U"=" : '#'; + +# Top-Middle Row +U"Q" : ';'; +U"W" : ','; +U"E" : '.'; +U"R" : 'p'; +U"T" : 'y'; +U"Y" : 'f'; +U"U" : 'g'; +U"I" : 'c'; +U"O" : 'r'; +U"P" : 'l'; +U"[" : '/'; +U"]" : '@'; +### / is in the same place + +# Middle Row +### A is in the same place +U"S" : 'o'; +U"D" : 'e'; +U"F" : 'u'; +U"G" : 'i'; +U"H" : 'd'; +U"J" : 'h'; +U"K" : 't'; +U"L" : 'n'; +U"Semicolon" : 's'; +U"Quote" : '-'; + +# Bottom-Middle Row + +U"LShift" :+ U"Function1"; # Do not replace LShift, just trigger Function1 in addition to LShift + +### XXX Not sure what the square key is (-HaaTa) +U"Z" : U"Quote"; # ' is hard to do using the single quote syntax +U"X" : 'q'; +U"C" : 'j'; +U"V" : 'k'; +U"B" : 'x'; +### M is in the same place +U"N" : 'b'; +U"Comma" : 'w'; +U"Period" : v'; +U"Slash" : 'z'; + +U"RShift" :+ U"Function1"; # Do not replace RShift, just trigger Function1 in addition to RShift + +# Bottom Row +# N/A + diff --git a/layouts/programmers_dvorak_shift.kll b/layouts/programmers_dvorak_shift.kll new file mode 100644 index 0000000..3eaf737 --- /dev/null +++ b/layouts/programmers_dvorak_shift.kll @@ -0,0 +1,48 @@ +Name = programmers dvorak shift layer; +Version = 0.1; +Author = "HaaTa (Jacob Alexander) 2016"; +KLL = 0.3d; + +# +# NOTE: See programmers_dvorak_default.kll for more details on how to use this layout +# It relies on the semantics of the US ANSI layout +# +# This file relies heavily on the blockKey capability for LShift (0xE1) and RShift (0xE5) +# However, it is only used in the cases where it's necessary +# +# We also rely on "fall-through" to the previous layer +# This means any normally shifted keys do not need to be redefined here +# + +# Modified Date +Date = 2016-08-06; + +### Mapping ### + +# Top Row +U"BackTick" : '~'; +U"1" : '%'; +U"2" : '7' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"3" : '5' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"4" : '3' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"5" : '1' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"6" : '9' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"7" : '0' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"8" : '2' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"9" : '4' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"0" : '6' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"-" : '8' + blockKey( 0xE1 ) + blockKey( 0xE5 ); +U"=" : '`' + blockKey( 0xE1 ) + blockKey( 0xE5 ); + +# Top-Middle Row +U"]" : '^'; + +# Middle Row +# N/A + +# Bottom-Middle Row +# N/A + +# Bottom Row +# N/A +