Skip to content

Commit

Permalink
win platform: TODO: add CR for 3+ levels on Windows
Browse files Browse the repository at this point in the history
win platform: minor repo cleanup
  • Loading branch information
dumblob committed Nov 3, 2022
1 parent 6a06dd4 commit 2265077
Show file tree
Hide file tree
Showing 150 changed files with 16,777 additions and 0 deletions.
4 changes: 4 additions & 0 deletions platform/win/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

### LShift + RShift modifier combination doesn't work

1. add CR for 3+ levels

1. maybe enforce LF for 2- levels (for 3+ levels CR is enforced)?

1. re-read https://metacpan.org/pod/UI::KeyboardLayout#Keyboard-input-on-Windows,-Part-I:-what-is-the-kernel-doing? and come up with some hacks?

1. generate all possible `Ctrl + Shift + Alt + AltGr` combination by MSKLC and compare sources to gain more knowledge about `CharModifiers` table
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
327 changes: 327 additions & 0 deletions platform/win/source-20180601-gerdLTGT/gerdLG00.klc
Original file line number Diff line number Diff line change
@@ -0,0 +1,327 @@
// 2010-2017 Jan Pacner <[email protected]>
// etaoin shrdlu!

// The concept of this keyboard layout
// motto: be as much compatible with ISO dvorak as possible
// 4. level is the same as 3. level
// 2. level of ISO dvorak goes without modifications to the 3. level
// the whole national alphabet is accessible directly from 1. and 2. level
// without any exception
// 3. level has some additional non-alphabet characters (e.g. numbers)
// 3. level is accessible only by pressing both Shifts at once (and
// holding either of them)
// there are 2 variants which differ in placement and/or availability of
// characters ' " < > „ “ en_dash
// in `ltgt`, characters „ “ are not available and ' " < > are at their
// original dvorak places and ! is duplicated for better reachability
// in `writer`, all characters are available, but " < > are in
// the 3. level, thus less reachable

// ----------- standard ISO dvorak, 1. and 2. level
// ~ ! @ # $ % ^ & * ( ) { }
// ` 1 2 3 4 5 6 7 8 9 0 [ ]
//
// " < > P Y F G C R L ? + |
// ' , . p y f g c r l / = \
//
// A O E U I D H T N S _
// a o e u i d h t n s -
//
// : Q J K X B M W V Z
// ; q j k x b m w v z
//
// space
// space

// ----------- german dvorak ltgt, 1. and 2. levelll
// ä Ö Ü ß
// ä ö ü ß
//
// " < > P Y F G C R L ? + |
// ' , . p y f g c r l / = \
//
// A O E U I D H T N S _
// a o e u i d h t n s -
//
// : Q J K X B M W V Z
// ; q j k x b m w v z
//
// NBSP
// space

// ----------- german dvorak ltgt, 3. level
// ~ ! @ # $ % ^ & * ( ) { }
//
// nda ! § , 7 8 9 [ ] + |
// en dash
//
// @ ° € ` : 4 5 6 = \
//
// 0 1 2 3 .
//
// NBSP

// ----------- german dvorak writer, 1. and 2. level
// ä Ö Ü ß
// ä ö ü ß
//
// “ nda ' P Y F G C R L ? + |
// en dash
// „ , . p y f g c r l / = \
//
// A O E U I D H T N S _
// a o e u i d h t n s -
//
// : Q J K X B M W V Z
// ; q j k x b m w v z
//
// NBSP
// space

// ----------- german dvorak writer, 3. level
// ~ ! @ # $ % ^ & * ( ) { }
//
// " < > § , 7 8 9 [ ] + |
//
// @ ° € ` : 4 5 6 = \
//
// 0 1 2 3 .
//
// NBSP

// ----------- german dvorak (ltgt|writer), 4. level
// the same as 3. level

// KBD identifier_max_8_bytes_long "Some description to show in keyboard settings and while switching layouts"
KBD gerdLTGT "German Dvorak ltgt (useful for text with lots of <>)"
//KBD gerdLTGT "German Dvorak writer (useful for text with lower/upper UTF-8 double quotes)"

COPYRIGHT "MIT license"

COMPANY "github.com/dumblob/ULKL/"
LOCALENAME "de-DE"
LOCALEID "00000407"
// LOCALEID "00000000"
//FIXME 1.1 after unused keys produce the <none> character
VERSION 1.0
//ATTRIBUTES
//MODIFIERS
SHIFTSTATE
// shift_state_idx // column_below modifiers
0 // 4 <none>
1 // 5 LSHIFT or RSHIFT pressed
2 // 6 both LSHIFT and RSHIFT pressed simultaneously
LAYOUT
// an extra @ at the end is a dead key
// -1 denotes the <none> character
// SC denotes a Virtual Scan Code
// Cap ~ CapsInfo (probably whether CapsLock is applicable)
// topmost row
//SC VK_ Cap 0 1 2
29 OEM_3 0 -1 -1 007e // <none>, <none>, TILDE
02 1 0 -1 -1 0021 // <none>, <none>, EXCLAMATION MARK
03 2 0 00e4 00c4 0040 // adiaeresis, Adiaeresis, COMMERCIAL AT
04 3 0 00f6 00d6 0023 // odiaeresis, Odiaeresis, NUMBER SIGN
05 4 0 -1 -1 0024 // <none>, <none>, DOLLAR SIGN
06 5 0 00fc 00dc 0025 // udiaeresis, Udiaeresis, PERCENT SIGN
07 6 0 -1 -1 005e // <none>, <none>, CIRCUMFLEX ACCENT
08 7 0 -1 -1 0026 // <none>, <none>, AMPERSAND
09 8 0 -1 -1 002a // <none>, <none>, ASTERISK
0a 9 0 -1 -1 0028 // <none>, <none>, LEFT PARENTHESIS
0b 0 0 -1 -1 0029 // <none>, <none>, RIGHT PARENTHESIS
0c OEM_4 0 00df 1e9e 007b // ssharp, U1E9E, LEFT CURLY BRACKET (BRACELEFT)
0d OEM_6 0 -1 -1 007d // <none>, <none>, RIGHT CURLY BRACKET (BRACERIGHT)
// FIXME wtf is this key? is it really <AE13>?
56 OEM_102 0 -1 -1 -1 // <none>, <none>, <none>
//0e ???? 0 ???? ???? ???? // backspace, backspace, backspace
// top row
//0f ???? 0 ???? ???? ???? // tab, tab, tab
// ltgt variant
10 OEM_7 0 0027 0022 -1 // APOSTROPHE, QUOTATION MARK (QUOTEDBL), <none>
11 OEM_COMMA 0 002c 003c 2013 // COMMA, LESS-THAN SIGN, U2013 (EN DASH, pomlcka)
12 OEM_PERIOD 0 002e 003e 0021 // FULL STOP (PERIOD), GREATER-THAN SIGN, EXCLAMATION MARK
// writer variant
//10 OEM_7 0 201e 201c 0022 // U201E LOWER QUOTATION MARK (QUOTEDBL), U201C UPPER QUOTATION MARK (QUOTEDBL), QUOTATION MARK (QUOTEDBL)
//11 OEM_COMMA 0 002c 2013 003c // COMMA, U2013 (EN DASH, pomlcka), LESS-THAN SIGN
//12 OEM_PERIOD 0 002e 0027 003e // FULL STOP (PERIOD), APOSTROPHE, GREATER-THAN SIGN
13 P 0 p P 00a7 // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, SECTION SIGN (PARAGRAPH)
14 Y 0 y Y -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>
15 F 0 f F 002c // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, COMMA
16 G 0 g G 7 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, DIGIT SEVEN
17 C 0 c C 8 // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, DIGIT EIGHT
18 R 0 r R 9 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, DIGIT NINE
19 L 0 l L 005b // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, LEFT SQUARE BRACKET
1a OEM_2 0 002f 003f 005d // SOLIDUS (SLASH), QUESTION MARK, RIGHT SQUARE BRACKET
1b OEM_PLUS 0 003d 002b 002b // EQUALS SIGN, PLUS SIGN, PLUS SIGN
2b OEM_5 0 005c 007c 007c // REVERSE SOLIDUS (BACKSLASH), VERTICAL LINE (BAR), VERTICAL LINE (BAR)
// home/middle row
//CapsLk
//3a ???? 0 001b 001b 001b // ESCAPE, ESCAPE, ESCAPE
//3a SGCap 0 001b 001b 001b // ESCAPE, ESCAPE, ESCAPE
1e A 0 a A 0040 // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, COMMERCIAL AT
1f O 0 o O 00b0 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, DEGREE
20 E 0 e E 20ac // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, EURO SIGN
21 U 0 u U 0060 // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, GRAVE ACCENT (GRAVE)
22 I 0 i I -1 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>
23 D 0 d D 003a // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, COLON
24 H 0 h H 4 // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, DIGIT FOUR
25 T 0 t T 5 // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, DIGIT FIVE
26 N 0 n N 6 // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, DIGIT SIX
27 S 0 s S 003d // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, EQUALS SIGN
// pomlcka (= minus = dash)
28 OEM_MINUS 0 002d 005f 005c // HYPHEN-MINUS (FIXME is it the plain minus?), LOW LINE (UNDERSCORE), REVERSE SOLIDUS (BACKSLASH)
//1c ???? 0 ???? ???? ???? // enter/return, enter/return, enter/return
// bottom row
//2a ???? 0 ???? ???? ???? // left shift, left shift, left shift
// left bottom key, right from <LFSH>, which doesn't follow the kbd standard
// FIXME wtf is this key? is it really <LSGT>?
56 OEM_102 0 -1 -1 -1 // <none>, <none>, <none>
2c OEM_1 0 003b 003a -1 // SEMICOLON, COLON, <none>
2d Q 0 q Q -1 // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>
2e J 0 j J -1 // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>
2f K 0 k K -1 // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>
30 X 0 x X -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>
31 B 0 b B 0 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, DIGIT ZERO
32 M 0 m M 1 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, DIGIT ONE
33 W 0 w W 2 // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, DIGIT TWO
34 V 0 v V 3 // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, DIGIT THREE
35 Z 0 z Z 002e // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, FULL STOP (PERIOD)
// numpad dot
53 DECIMAL 0 002e 002e 002e // FULL STOP (PERIOD), FULL STOP (PERIOD), FULL STOP (PERIOD)
//36 ???? 0 ???? ???? ???? // right shift, right shift, right shift
// bottom-most row
//?? ???? 0 ???? ???? ???? // left ctrl, left ctrl, left ctrl
//5b ???? 0 ???? ???? ???? // left super (win), left super (win), left super (win)
//?? ???? 0 ???? ???? ???? // left alt (meta), left alt (meta), left alt (meta)
39 SPACE 0 0020 00a0 00a0 // SPACE, NO-BREAK SPACE, NO-BREAK SPACE
//38 ???? 0 ???? ???? ???? // right alt (meta), right alt (meta), right alt (meta)
//5c ???? 0 ???? ???? ???? // right super (win), right super (win), right super (win)
//?? ???? 0 ???? ???? ???? // menu, menu, menu
//5d ???? 0 ???? ???? ???? // menu, menu, menu
//56 ???? 0 ???? ???? ???? // menu, menu, menu
//1d ???? 0 ???? ???? ???? // right ctrl, right ctrl, right ctrl
//46 ???? 0 ???? ???? ???? // scroll lock, scroll lock, scroll lock
//LIGATURE
//
//// LigatureRow( a: string, mod: byte = SHIFTSTATE[?], tuple<b:string, c:string > )
//// LigatureRow( a: string, mod: byte = SHIFTSTATE[?], tuple<b:string, c:string, d:string > )
//// LigatureRow( a: string, mod: byte = SHIFTSTATE[?], tuple<b:string, c:string, d:string, e:string> )
//// a mod b c
//KEYNAME
//
//01 Esc
//0e Backspace
//0f Tab
//1c Enter
//1d Ctrl
////2a Shift
//2a "Left Shift"
//36 "Right Shift"
//37 "Num *"
//38 Alt
//39 Space
//3a "Caps Lock"
//3b F1
//3c F2
//3d F3
//3e F4
//3f F5
//40 F6
//41 F7
//42 F8
//43 F9
//44 F10
//45 Pause
//46 "Scroll Lock"
//47 "Num 7"
//48 "Num 8"
//49 "Num 9"
//4a "Num -"
//4b "Num 4"
//4c "Num 5"
//4d "Num 6"
//4e "Num +"
//4f "Num 1"
//50 "Num 2"
//51 "Num 3"
//52 "Num 0"
//53 "Num Del"
//54 "Sys Req"
//57 F11
//58 F12
//7c F13
//7d F14
//7e F15
//7f F16
//80 F17
//81 F18
//82 F19
//83 F20
//84 F21
//85 F22
//86 F23
//87 F24
//
//KEYNAME_EXT
//
//1c "Num Enter"
//1d "Right Ctrl"
//35 "Num /"
//37 "Prnt Scrn"
//38 "Right Alt"
//45 "Num Lock"
//46 Break
//47 Home
//48 Up
//49 "Page Up"
//4b Left
//4d Right
//4f End
//50 Down
//51 "Page Down"
//52 Insert
//53 Delete
//54 <00>
//54 "Sys Req"
//56 Help
//5b "Left Windows"
//5c "Right Windows"
//5d Application

DESCRIPTIONS

// Don't ask me why the parser doesn't strip double quotes here (
// even though they're stripped for the KBD command/section above).
0409 German Dvorak ltgt (useful for text with lots of <>)
//0409 German Dvorak writer (useful for text with lower/upper UTF-8 double quotes)

LANGUAGENAMES

// Don't ask me why the parser doesn't strip double quotes here (
// even though they're stripped for the KBD command/section above).
0409 German or related (all locations world-wide)

ENDKBD

// vim: set ft=javascript:
Loading

0 comments on commit 2265077

Please sign in to comment.