Fix des KP_ und Capslock Bugs (Linux Konsole)

pull/569/head
Valentin Herrmann 3 years ago
parent b044282340
commit 12a8714bf9
  1. 11
      linux/console/better-keymap/README
  2. BIN
      linux/console/better-keymap/better-keymap
  3. 319
      linux/console/better-keymap/better-keymap.rkt
  4. 5
      linux/console/better-keymap/better-keymap.sh
  5. 196
      linux/console/better-keymap/head.map
  6. 256
      linux/console/better-keymap/input-maps/adnw.map
  7. 235
      linux/console/better-keymap/input-maps/bone.map
  8. 250
      linux/console/better-keymap/input-maps/koy.map
  9. 237
      linux/console/better-keymap/input-maps/neoqwertz.map
  10. 490
      linux/console/better-keymap/original-maps/adnw.map
  11. 472
      linux/console/better-keymap/original-maps/bone.map
  12. 482
      linux/console/better-keymap/original-maps/koy.map
  13. 473
      linux/console/better-keymap/original-maps/neoqwertz.map
  14. 934
      linux/console/better-keymap/output-maps/adnw.map
  15. 918
      linux/console/better-keymap/output-maps/bone.map
  16. 920
      linux/console/better-keymap/output-maps/koy.map
  17. 920
      linux/console/better-keymap/output-maps/neoqwertz.map
  18. 198
      linux/console/better-keymap/tail.map
  19. 1368
      linux/console/bone.map
  20. 6
      linux/console/neo.map
  21. 1374
      linux/console/neoqwertz.map

@ -0,0 +1,11 @@
Das Programm better-keymap.rkt konvertiert die keymaps bei denen
1) CapsLock nicht funktioniert
2) KP_keysum verwendet wird (keysum wird nur geschrieben, wenn NumLock an ist)
zu funktionierenden. Meist treten diese Probleme auf, wenn eine keymap von xmodmap kompiliert wird.
Vor der Verwendung muss die nicht funktionierende keymap gekürzt werden, sodass nur Buchstabentasten, Zahltasten, tote Tasten und das Leerzeichen übrigbleiben (rechtes Mod3 ausgeschlossen). Dann muss eine raco repl geöffnet werden und folgendes eingegeben werden:
(main "head.map"
<input-file>
"tail.map"
<output-file>)
Dabei sind <input-file> und <output-file> Strings.

@ -0,0 +1,319 @@
#lang racket
;;Helper functions and datatypes
;;String functions
(define (uncomment-line line)
(car (regexp-match #rx"^[^#\\!\n]*" line)))
(define (empty-line? line)
(equal? line ""))
;;Line-list
(define (line-list? line-list)
(and (pair? line-list)
(and (number? (car line-list))
(andmap (lambda (e)
(and (string? (cdr e))
(number? (car e))))
(cdr line-list)))))
(define (keycode-line-list ll)
(car ll))
(define (keysymbols-line-list ll)
(cdr ll))
(define (line-str->line-list line-str)
(let ([line-str (uncomment-line line-str)])
(let ([reg1 (regexp-match #px"^[[:blank:]]*keycode[[:blank:]]+(\\d+)[[:blank:]]*=[[:blank:]]*((?:(?:U\\+(?:\\p{L}|\\d)+|\\+?(?:\\p{L}|_)+)(?:[[:blank:]]+|$))+)[[:blank:]]*$" ;Matches lines like " keycode 12 = enene ennnn U+1E9E blub plus "
line-str)]
[reg2 (regexp-match #px"^[[:blank:]]*((?:[a-z]+[[:blank:]]+)+)keycode[[:blank:]]+(\\d+)[[:blank:]]*=[[:blank:]]*(U\\+(?:\\p{L}|\\d)+|\\+?(?:\\p{L}|_)+)\\s*$"
line-str)] ;Matches lines like " altgr shiftl keycode 26 = w"
)
(cond [reg1
(cons (string->number (cadr reg1))
(let iter ([groups (regexp-match* #px"U\\+(?:\\p{L}|\\d)+|\\+?(?:\\p{L}|_)+"
(caddr reg1))]
[counter 0])
(cond [(null? groups) '()]
[else (cons (cons counter
(car groups))
(iter (cdr groups)
(add1 counter)))])))]
[reg2
(list (string->number (caddr reg2))
(cons (foldl +
0
(map (lambda (e)
(expt 2
(index-of modifier
e)))
(regexp-match* #px"\\S+"
(cadr reg2))))
(cadddr reg2)))]
[else (error "Error: Unrecognized line:" line-str)]))))
(define (accumulater combiner initial-value f l)
(foldr combiner
initial-value
(map f l)))
(define (accumulatel combiner initial-value f l)
(foldl combiner
initial-value
(map f l)))
(define (line-list->lines-str line-l)
(define (num->modifier n)
(let iter ([n n]
[counter 0])
(cond [(= n 0) '()]
[(even? n)
(iter (/ n 2)
(add1 counter))]
[else (cons (list-ref modifier
counter)
(iter (/ (- n 1)
2)
(add1 counter)))])))
(accumulater ~a ""
(lambda (e)
(~a (~a (accumulater ~a ""
(lambda (mod)
(~a mod
#:min-width 8
#:align 'left))
(let ([hui (num->modifier (car e))])
hui))
#:min-width 16
#:align 'right)
(~a "keycode"
(~a (car line-l)
#:min-width 4
#:align 'right)
" = "
(cdr e)
"\n")))
(cdr line-l)))
(define (contains-line-list ll e)
(ormap (lambda (x)
(equal? (car x) e))
ll))
(define (combine-line-lists ll1 ll2)
(if (= (car ll1)
(car ll2))
(cons (car ll1)
(let iter ([ll1 (cdr ll1)]
[ll2 (cdr ll2)])
(if (null? ll2)
ll1
(iter (if (contains-line-list ll1
(caar ll2))
(error "Unable to combine line lists. Same keycode in both present:\n"
ll1
"and"
ll2)
(append ll1 (list (car ll2))))
(cdr ll2)))))
(error "Expected equal keycodes. Got: " (car ll1) " and " (car ll2))))
;;Keylist
(define (keylist? keylist)
(andmap line-list? keylist))
(define (make-keylist . line-lists)
(if (keylist? line-lists)
line-lists
(error "Wrong type of" line-lists "\n Should be: keylist?")))
(define (first-keylist keylist)
(car keylist))
(define (rest-keylist keylist)
(cdr keylist))
(define (append-keylists-without-check . kl)
(append* kl))
(define (push-end-keylist keylist ll)
(append keylist (list ll)))
(define (find-keycode-keylist keylist keycode)
(let iter ([keylist keylist]
[counter 0])
(if (empty-keylist? keylist)
#f
(or (and (= (keycode-line-list (first-keylist keylist))
keycode)
counter)
(iter (rest-keylist keylist)
(add1 counter))))))
(define (split-keylist keylist index)
(let-values ([(a b) (split-at keylist index)])
(cons a b)))
(define empty-keylist (make-keylist))
(define (append-keylists kl1 kl2)
(if (empty-keylist? kl2)
kl1
(append-keylists (let* ([ll (first-keylist kl2)]
[rs (find-keycode-keylist kl1
(keycode-line-list ll))])
(if rs
(let ([split (split-keylist kl1 rs)])
(append-keylists-without-check (car split)
(make-keylist (combine-line-lists (cadr split)
ll))
(cddr split)))
(push-end-keylist kl1 ll)))
(rest-keylist kl2))))
(define (empty-keylist? keylist)
(equal? empty-keylist keylist))
;misc
(define (number->bits num)
(cond [(= num 0) '()]
[(even? num) (cons 0
(number->bits (/ num
2)))]
[else (cons 1
(number->bits (/ (sub1 num)
2)))]))
(define (enumerate n)
(let iter ([a 0])
(if (> a n)
'()
(cons a
(iter (add1 a))))))
(define (add-pair c1 c2)
(list (+ (car c1)
(car c2))
(+ (cadr c1)
(cadr c2))))
(define (iterate-keylist keylist f)
(map (λ (line-list)
(cons (car line-list)
(map (λ (leaf)
(f leaf))
(cdr line-list))))
keylist))
;;Actual program
(define modifier '("shift" "altgr" "control" "alt" "shiftl" "shiftr" "ctrll" "ctrlr" "capsshift"))
(define (keylist->keymap keylist)
(if (empty-keylist? keylist)
""
(~a (line-list->lines-str (first-keylist keylist)) ;~a without arguments is equivalent to string-append
"\n"
(keylist->keymap (rest-keylist keylist)))))
(define (keymap->keylist keymap)
(foldl (lambda (line rest-lines)
(append-keylists rest-lines
(make-keylist (line-str->line-list line))))
empty-keylist
(filter (lambda (line)
(not (empty-line? line)))
(map (lambda (line)
(uncomment-line line))
(regexp-match* #px"[^\n]*\n|.+$"
keymap)))))
(define (convert keylist)
(define c-map
'([1 16]
[2 2]
[16 64]))
(define convert-map
(map (λ (x)
(let iter ([c-map c-map]
[x x])
(cond [(null? x) ; x is shorter than c-map
(list 0 0)]
[(= (car x) 0) (iter (cdr c-map)
(cdr x))]
[else (add-pair (car c-map)
(iter (cdr c-map)
(cdr x)))])))
(map number->bits
(enumerate (- (expt 2 (length c-map))
1)))))
(iterate-keylist keylist
(λ (leaf)
(cons (car (dict-ref convert-map
(car leaf)))
(cdr leaf)))))
(define (myfilter-input keymap)
(define shift-input "shift")
(regexp-replaces (regexp-replace* #px"([[:blank:]]*)(keycode[[:blank:]]+\\d+[[:blank:]]*=[[:blank:]]*)([a-z])([[:blank:]]+(?:\n|$))"
keymap
(λ (all blank middle keysymbol end)
(~a all "\n"
shift-input " "
middle
"+" (string-upcase keysymbol)
end)))
'([#px"KP_1" "one"]
[#px"KP_2" "two"]
[#px"KP_3" "three"]
[#px"KP_4" "four"]
[#px"KP_5" "five"]
[#px"KP_6" "six"]
[#px"KP_7" "seven"]
[#px"KP_8" "eight"]
[#px"KP_9" "nine"]
[#px"KP_0" "zero"]
[#px"KP_Multiply" "asterisk"]
[#px"KP_Divide" "slash"]
[#px"KP_Substract" "minus"]
[#px"KP_Addition" "plus"]
[#px"KP_Comma" "comma"])))
(define (myfilter-output keymap)
(regexp-replaces keymap
'([#px"((?:[[:blank:]]|[a-z])*)shiftl((?:[[:blank:]]|[a-z])*[[:blank:]]+keycode[[:blank:]]+\\d+[[:blank:]]*=[[:blank:]]*(?:U\\+(?:\\p{L}|\\d)+|\\+?(?:\\p{L}|_)+)[[:blank:]]*\n)"
"\\1shiftl\\2\\1shiftr\\2"]
[#px"(?:^|\n)[[:blank:]]*(keycode[[:blank:]]+\\d+[[:blank:]]*=[[:blank:]]*[a-z][[:blank:]]*\n)"
"\n \\1shift shiftl \\1shift shiftr \\1"])))
(define (main tail-file body-file head-file output-file)
(display-to-file (~a (file->string head-file)
(myfilter-output (keylist->keymap (convert (keymap->keylist (myfilter-input (file->string body-file))))))
(file->string tail-file))
output-file))
(define (shell)
(let ([body-file (make-parameter null)]
[output-file (make-parameter null)]
[head-file (make-parameter null)]
[tail-file (make-parameter null)])
(command-line
#:program "better-keymap"
#:once-each
[("-b" "--body-file") body
""
(body-file body)]
[("-o" "--output-file") output
""
(output-file output)]
[("--head") head
""
(head-file head)]
[("-t" "--tail") tail
""
(tail-file tail)]
#:args rest
(main (tail-file)
(body-file)
(head-file)
(output-file)))))

@ -0,0 +1,5 @@
INFILE=../bone_in.map ;
OUTFILE=../bone_output.map ;
cat head.map > $OUTFILE ;
cat $INFILE | sed -n -e 's/KP_1/one /g' -e 's/KP_2/two /g' -e 's/KP_3 /three/g' -e 's/KP_4/four/g' -e 's/KP_5/five/g' -e 's/KP_6/six /g' -e 's/KP_7 /seven/g' -e 's/KP_8 /eight/g' -e 's/KP_9/nine/g' -e 's/KP_0/zero/g' -e 's/KP_Multiply/asterisk /g' -e 's/KP_Divide/slash /g' -e 's/KP_Substract/minus /g' -e 's/KP_Addition/plus /g' -e 's/KP_Comma/comma /g' | racket -t better-keymap.rkt -- >> $OUTFILE ;
cat tail.map >> $OUTFILE ;

@ -0,0 +1,196 @@
#keymaps 0-3,16-19,32-35,64-67,80-83,96-99
keymaps 0-127
compose as usual
strings as usual
alt_is_meta
#==========================================================================
# Default Keys (usually not needed)
#==========================================================================
keycode 1 = Escape
alt keycode 1 = Meta_Escape
shiftr alt keycode 1 = Meta_Escape
keycode 14 = Delete
alt keycode 14 = Meta_Delete
shiftl alt keycode 14 = Meta_Delete
shiftr alt keycode 14 = Meta_Delete
keycode 15 = Tab
shiftl keycode 15 = Meta_Tab
shiftr keycode 15 = Meta_Tab
alt keycode 15 = Meta_Tab
keycode 28 = Return
alt keycode 28 = Meta_Control_m
keycode 29 = Control
keycode 97 = Control
keycode 56 = Alt
#==========================================================================
# linux-keys-bare, Control Keys
#==========================================================================
keycode 59 = F1
alt keycode 59 = Console_1
control alt keycode 59 = Console_1
shiftl keycode 59 = F13
shiftr keycode 59 = F13
keycode 60 = F2
alt keycode 60 = Console_2
control alt keycode 60 = Console_2
shiftl keycode 60 = F14
shiftr keycode 60 = F14
keycode 61 = F3
alt keycode 61 = Console_3
control alt keycode 61 = Console_3
shiftl keycode 61 = F15
shiftr keycode 61 = F15
keycode 62 = F4
alt keycode 62 = Console_4
control alt keycode 62 = Console_4
shiftl keycode 62 = F16
shiftr keycode 62 = F16
keycode 63 = F5
alt keycode 63 = Console_5
control alt keycode 63 = Console_5
shiftl keycode 63 = F17
shiftr keycode 63 = F17
keycode 64 = F6
alt keycode 64 = Console_6
control alt keycode 64 = Console_6
shiftl keycode 64 = F18
shiftr keycode 64 = F18
keycode 65 = F7
alt keycode 65 = Console_7
control alt keycode 65 = Console_7
shiftl keycode 65 = F19
shiftr keycode 65 = F19
keycode 66 = F8
alt keycode 66 = Console_8
control alt keycode 66 = Console_8
shiftl keycode 66 = F20
shiftr keycode 66 = F20
keycode 67 = F9
alt keycode 67 = Console_9
control alt keycode 67 = Console_9
shiftl keycode 67 = F21
shiftr keycode 67 = F21
keycode 68 = F10
alt keycode 68 = Console_10
control alt keycode 68 = Console_10
shiftl keycode 68 = F22
shiftr keycode 68 = F22
keycode 87 = F11
alt keycode 87 = Console_11
control alt keycode 87 = Console_11
shiftl keycode 87 = F23
shiftr keycode 87 = F23
keycode 88 = F12
alt keycode 88 = Console_12
control alt keycode 88 = Console_12
shiftl keycode 88 = F24
shiftr keycode 88 = F24
keycode 103 = Up
alt keycode 103 = KeyboardSignal
keycode 105 = Left
alt keycode 105 = Decr_Console
keycode 106 = Right
alt keycode 106 = Incr_Console
keycode 108 = Down
keycode 110 = Insert
keycode 111 = Remove
control alt keycode 111 = Boot
keycode 102 = Home
keycode 107 = End
keycode 104 = PageUp
shiftl keycode 104 = Scroll_Backward
shiftr keycode 104 = Scroll_Backward
keycode 109 = PageDown
shiftl keycode 109 = Scroll_Forward
shiftr keycode 109 = Scroll_Forward
keycode 99 = Compose
alt keycode 99 = Control_backslash
control keycode 99 = Control_backslash
plain keycode 70 = Scroll_Lock
shiftl keycode 70 = Show_Memory
shiftr keycode 70 = Show_Memory
control keycode 70 = Show_State
alt keycode 70 = Show_Registers
keycode 119 = Pause
## Alternatively:
#
#include "linux-keys-bare"
#
# shiftl keycode 59 = F13
# shiftr keycode 59 = F13
# shiftl keycode 60 = F14
# shiftr keycode 60 = F14
# shiftl keycode 61 = F15
# shiftr keycode 61 = F15
# shiftl keycode 62 = F16
# shiftr keycode 62 = F16
#
# shiftl keycode 63 = F17
# shiftr keycode 63 = F17
# shiftl keycode 64 = F18
# shiftr keycode 64 = F18
# shiftl keycode 65 = F19
# shiftr keycode 65 = F19
# shiftl keycode 66 = F20
# shiftr keycode 66 = F20
#
# shiftl keycode 67 = F21
# shiftr keycode 67 = F21
# shiftl keycode 68 = F22
# shiftr keycode 68 = F22
# shiftl keycode 87 = F23
# shiftr keycode 87 = F23
# shiftl keycode 88 = F24
# shiftr keycode 88 = F24
#
# shiftl keycode 104 = Scroll_Backward
# shiftr keycode 104 = Scroll_Backward
#
# shiftl keycode 109 = Scroll_Forward
# shiftr keycode 109 = Scroll_Forward
#
# shiftl keycode 70 = Show_Memory
# shiftr keycode 70 = Show_Memory
#==========================================================================
# Modifier
#==========================================================================
keycode 42 = ShiftL
shiftr keycode 42 = Caps_Lock
keycode 54 = ShiftR
shiftl keycode 54 = Caps_Lock
keycode 58 = AltGr # Mod3 Left
keycode 43 = AltGr # Mod3 Right
keycode 86 = CtrlL # Mod4 Left
keycode 100 = CtrlL # Mod4 Right
#==========================================================================
# Compose
#==========================================================================
# TODO: add most important compose definitions
altgr keycode 15 = Compose # Mod3 + Tab: Compose
#==========================================================================
# Character keys
#==========================================================================

@ -0,0 +1,256 @@
! ----Space key-------------------------------------------------------------
keycode 57 = space space space nobreakspace
shiftl keycode 57 = zero
shift shiftl keycode 57 = zero
altgr shiftl keycode 57 = U+202F
! ----dead keys-------------------------------------------------------------
keycode 41 = dead_circumflex dead_caron U+21BB U+02DE
shiftl keycode 41 = U+0307
keycode 13 = dead_grave dead_cedilla U+030a VoidSymbol
shiftl keycode 13 = dead_diaeresis
altgr shiftl keycode 13 = U+0304
keycode 27 = dead_acute dead_tilde VoidSymbol VoidSymbol
shiftl keycode 27 = dead_doubleacute
altgr shiftl keycode 27 = dead_breve
! --------------------------------------------------------------------------
! Row 1 (number row)
! --------------------------------------------------------------------------
keycode 2 = one degree onesuperior VoidSymbol
shiftl keycode 2 = ordfeminine
altgr shiftl keycode 2 = notsign
keycode 3 = two section twosuperior VoidSymbol
shiftl keycode 3 = masculine
altgr shiftl keycode 3 = U+2228
keycode 4 = three U+2113 threesuperior VoidSymbol
shiftl keycode 4 = U+2116
altgr shiftl keycode 4 = U+2227
keycode 5 = four guillemotright U+203A U+2640
altgr shiftl keycode 5 = U+22A5
keycode 6 = five guillemotleft U+2039 U+2642
shiftl keycode 6 = periodcentered
altgr shiftl keycode 6 = U+2221
keycode 7 = six dollar cent U+26A5
shiftl keycode 7 = sterling
altgr shiftl keycode 7 = U+2225
keycode 8 = seven U+20ac yen U+03F0
shiftl keycode 8 = currency
altgr shiftl keycode 8 = U+2192
keycode 9 = eight U+201e U+201a U+2329
shiftl keycode 9 = Tab
altgr shiftl keycode 9 = U+221e
keycode 10 = nine U+201c U+2018 U+232a
shiftl keycode 10 = slash
shift shiftl keycode 10 = slash
altgr shiftl keycode 10 = U+221d
keycode 11 = zero U+201d U+2019 VoidSymbol
shiftl keycode 11 = asterisk
shift shiftl keycode 11 = asterisk
keycode 12 = minus U+2014 VoidSymbol U+2011
shiftl keycode 12 = minus
shift shiftl keycode 12 = minus
altgr shiftl keycode 12 = hyphen
! --------------------------------------------------------------------------
! Row 2 (upper row)
! --------------------------------------------------------------------------
keycode 16 = k
altgr keycode 16 = U+2026
shift altgr keycode 16 = U+03ba
shiftl keycode 16 = Prior
shift shiftl keycode 16 = Prior
altgr shiftl keycode 16 = multiply
keycode 17 = u
altgr keycode 17 = underscore
shift altgr keycode 17 = VoidSymbol
shiftl keycode 17 = BackSpace
shift shiftl keycode 17 = BackSpace
altgr shiftl keycode 17 = U+2282
keycode 18 = udiaeresis Udiaeresis
altgr keycode 18 = bracketleft
shift altgr keycode 18 = U+03bb
shiftl keycode 18 = Up
shift shiftl keycode 18 = Up
altgr shiftl keycode 18 = U+222a
keycode 19 = period U+2022
altgr keycode 19 = bracketright
shift altgr keycode 19 = U+03D1
shiftl keycode 19 = Remove
shift shiftl keycode 19 = Remove
altgr shiftl keycode 19 = U+21A6
keycode 20 = adiaeresis Adiaeresis
altgr keycode 20 = asciicircum
shift altgr keycode 20 = U+03b7
shiftl keycode 20 = Next
shift shiftl keycode 20 = Next
altgr shiftl keycode 20 = U+2135
keycode 21 = v
altgr keycode 21 = exclam
shift altgr keycode 21 = exclam
shiftl keycode 21 = exclamdown
shift shiftl keycode 21 = exclamdown
altgr shiftl keycode 21 = U+221a
keycode 22 = g
altgr keycode 22 = less
shift altgr keycode 22 = U+03b3
shiftl keycode 22 = seven
shift shiftl keycode 22 = seven
altgr shiftl keycode 22 = U+0393
keycode 23 = c
altgr keycode 23 = greater
shift altgr keycode 23 = U+03c7
shiftl keycode 23 = eight
shift shiftl keycode 23 = eight
altgr shiftl keycode 23 = U+2102
keycode 24 = l
altgr keycode 24 = equal
shift altgr keycode 24 = U+03bb
shiftl keycode 24 = nine
shift shiftl keycode 24 = nine
altgr shiftl keycode 24 = U+039b
keycode 25 = j
altgr keycode 25 = ampersand
shift altgr keycode 25 = U+03b8
shiftl keycode 25 = plus
shift shiftl keycode 25 = plus
altgr shiftl keycode 25 = U+0398
keycode 26 = f
altgr keycode 26 = U+017F
shift altgr keycode 26 = U+03c6
shiftl keycode 26 = U+2212
shift shiftl keycode 26 = U+2212
altgr shiftl keycode 26 = U+03a6
! --------------------------------------------------------------------------
! Row 3 (home row, middle row)
! --------------------------------------------------------------------------
keycode 30 = h
altgr keycode 30 = backslash
shift altgr keycode 30 = U+03c8
shiftl keycode 30 = Home
shift shiftl keycode 30 = Home
altgr shiftl keycode 30 = U+03a8
keycode 31 = i
altgr keycode 31 = slash
shift altgr keycode 31 = U+03b9
shiftl keycode 31 = Left
shift shiftl keycode 31 = Left
altgr shiftl keycode 31 = U+222b
keycode 32 = e
altgr keycode 32 = braceleft
shift altgr keycode 32 = U+03b5
shiftl keycode 32 = Down
shift shiftl keycode 32 = Down
altgr shiftl keycode 32 = U+2203
keycode 33 = a
altgr keycode 33 = braceright
shift altgr keycode 33 = U+03b1
shiftl keycode 33 = Right
shift shiftl keycode 33 = Right
altgr shiftl keycode 33 = U+2200
keycode 34 = o
altgr keycode 34 = asterisk
shift altgr keycode 34 = U+03bf
shiftl keycode 34 = End
shift shiftl keycode 34 = End
altgr shiftl keycode 34 = U+2208
keycode 35 = d
altgr keycode 35 = question
shift altgr keycode 35 = U+03b4
shiftl keycode 35 = questiondown
shift shiftl keycode 35 = questiondown
altgr shiftl keycode 35 = U+0394
keycode 36 = t
altgr keycode 36 = parenleft
shift altgr keycode 36 = U+03c4
shiftl keycode 36 = four
shift shiftl keycode 36 = four
altgr shiftl keycode 36 = U+2202
keycode 37 = r
altgr keycode 37 = parenright
shift altgr keycode 37 = U+03c1
shiftl keycode 37 = five
shift shiftl keycode 37 = five
altgr shiftl keycode 37 = U+211D
keycode 38 = n
altgr keycode 38 = minus
shift altgr keycode 38 = U+03bd
shiftl keycode 38 = six
shift shiftl keycode 38 = six
altgr shiftl keycode 38 = U+2115
keycode 39 = s
altgr keycode 39 = colon
shift altgr keycode 39 = U+03c3
shiftl keycode 39 = U+002c
shift shiftl keycode 39 = comma
altgr shiftl keycode 39 = U+03a3
keycode 40 = ssharp U+1E9E
altgr keycode 40 = at
shift altgr keycode 40 = U+03c2
shiftl keycode 40 = period
shift shiftl keycode 40 = U+002e
altgr shiftl keycode 40 = U+2218
! --------------------------------------------------------------------------
! Row 4 (lower row)
! --------------------------------------------------------------------------
keycode 44 = x
altgr keycode 44 = numbersign
shift altgr keycode 44 = U+03be
shiftl keycode 44 = Escape
shift shiftl keycode 44 = Escape
altgr shiftl keycode 44 = U+039e
keycode 45 = y
altgr keycode 45 = dollar
shift altgr keycode 45 = U+03c5
shiftl keycode 45 = Tab
shift shiftl keycode 45 = Tab
altgr shiftl keycode 45 = U+2207
keycode 46 = odiaeresis Odiaeresis
altgr keycode 46 = bar
shift altgr keycode 46 = U+03F5
shiftl keycode 46 = Insert
shift shiftl keycode 46 = Insert
altgr shiftl keycode 46 = U+2229
keycode 47 = comma U+2013
altgr keycode 47 = asciitilde
shift altgr keycode 47 = U+03F1
shiftl keycode 47 = Return
shift shiftl keycode 47 = Return
altgr shiftl keycode 47 = U+21D2
keycode 48 = q
altgr keycode 48 = grave
shift altgr keycode 48 = U+03D5
shiftl keycode 48 = VoidSymbol
shift shiftl keycode 48 = VoidSymbol
altgr shiftl keycode 48 = U+211A
keycode 49 = b
altgr keycode 49 = plus
shift altgr keycode 49 = U+03b2
shiftl keycode 49 = colon
altgr shiftl keycode 49 = U+21D0
keycode 50 = p
altgr keycode 50 = percent
shift altgr keycode 50 = U+03c0
shiftl keycode 50 = one
shift shiftl keycode 50 = one
altgr shiftl keycode 50 = U+03a0
keycode 51 = w
altgr keycode 51 = quotedbl
shift altgr keycode 51 = U+03c9
shiftl keycode 51 = two
shift shiftl keycode 51 = two
altgr shiftl keycode 51 = U+03a9
keycode 52 = m
altgr keycode 52 = apostrophe
shift altgr keycode 52 = U+03bc
shiftl keycode 52 = three
shift shiftl keycode 52 = three
altgr shiftl keycode 52 = U+21d4
keycode 53 = z
altgr keycode 53 = semicolon
shift altgr keycode 53 = U+03b6
shiftl keycode 53 = semicolon
altgr shiftl keycode 53 = U+2124

@ -0,0 +1,235 @@
! ----Space key-------------------------------------------------------------
keycode 57 = space space space nobreakspace
shiftl keycode 57 = zero
shift shiftl keycode 57 = zero
altgr shiftl keycode 57 = U+202F
! ----dead keys-------------------------------------------------------------
keycode 41 = dead_circumflex dead_caron U+21BB U+02DE
shiftl keycode 41 = U+0307
keycode 13 = dead_grave dead_cedilla U+030a VoidSymbol
shiftl keycode 13 = dead_diaeresis
altgr shiftl keycode 13 = macron
keycode 27 = dead_acute dead_tilde VoidSymbol VoidSymbol
shiftl keycode 27 = dead_doubleacute
altgr shiftl keycode 27 = dead_breve
! --------------------------------------------------------------------------
! Row 1 (number row)
! --------------------------------------------------------------------------
keycode 2 = one degree onesuperior VoidSymbol
shiftl keycode 2 = ordfeminine
altgr shiftl keycode 2 = notsign
keycode 3 = two section twosuperior VoidSymbol
shiftl keycode 3 = masculine
altgr shiftl keycode 3 = U+2228
keycode 4 = three U+2113 threesuperior VoidSymbol
shiftl keycode 4 = U+2116
altgr shiftl keycode 4 = U+2227
keycode 5 = four guillemotright U+203A U+2640
altgr shiftl keycode 5 = U+22A5
keycode 6 = five guillemotleft U+2039 U+2642
shiftl keycode 6 = periodcentered
altgr shiftl keycode 6 = U+2221
keycode 7 = six dollar cent U+26A5
shiftl keycode 7 = sterling
altgr shiftl keycode 7 = U+2225
keycode 8 = seven U+20ac yen U+03F0
shiftl keycode 8 = currency
altgr shiftl keycode 8 = U+2192
keycode 9 = eight U+201e U+201a U+2329
shiftl keycode 9 = Tab
altgr shiftl keycode 9 = U+221e
keycode 10 = nine U+201c U+2018 U+232a
shiftl keycode 10 = slash
shift shiftl keycode 10 = slash
altgr shiftl keycode 10 = U+221d
keycode 11 = zero U+201d U+2019 VoidSymbol
shiftl keycode 11 = asterisk
shift shiftl keycode 11 = asterisk
keycode 12 = minus U+2014 VoidSymbol U+2011
shiftl keycode 12 = minus
shift shiftl keycode 12 = minus
altgr shiftl keycode 12 = hyphen
! --------------------------------------------------------------------------
! Row 2 (upper row)
! --------------------------------------------------------------------------
keycode 16 = j
altgr keycode 16 = U+2026
shift altgr keycode 16 = U+03b8
shiftl keycode 16 = Prior
shift shiftl keycode 16 = Prior
altgr shiftl keycode 16 = U+0398
keycode 17 = d
altgr keycode 17 = underscore
shift altgr keycode 17 = U+03b4
shiftl keycode 17 = BackSpace
shift shiftl keycode 17 = BackSpace
altgr shiftl keycode 17 = U+0394
keycode 18 = u
altgr keycode 18 = bracketleft
shiftl keycode 18 = Up
shift shiftl keycode 18 = Up
altgr shiftl keycode 18 = U+2282
keycode 19 = a
altgr keycode 19 = bracketright
shift altgr keycode 19 = U+03b1
shiftl keycode 19 = Remove
shift shiftl keycode 19 = Remove
altgr shiftl keycode 19 = U+2200
keycode 20 = x
altgr keycode 20 = asciicircum
shift altgr keycode 20 = U+03be
shiftl keycode 20 = Next
shift shiftl keycode 20 = Next
altgr shiftl keycode 20 = U+039e
keycode 21 = p
altgr keycode 21 = exclam
shift altgr keycode 21 = U+03c0
shiftl keycode 21 = exclamdown
altgr shiftl keycode 21 = U+03a0
keycode 22 = h
altgr keycode 22 = less
shift altgr keycode 22 = U+03c8
shiftl keycode 22 = seven
shift shiftl keycode 22 = seven
altgr shiftl keycode 22 = U+03a8
keycode 23 = l
altgr keycode 23 = greater
shift altgr keycode 23 = U+03bb
shiftl keycode 23 = eight
shift shiftl keycode 23 = eight
altgr shiftl keycode 23 = U+039b
keycode 24 = m
altgr keycode 24 = equal
shift altgr keycode 24 = U+03bc
shiftl keycode 24 = nine
shift shiftl keycode 24 = nine
altgr shiftl keycode 24 = U+21d4
keycode 25 = w
altgr keycode 25 = ampersand
shift altgr keycode 25 = U+03c9
shiftl keycode 25 = plus
shift shiftl keycode 25 = plus
altgr shiftl keycode 25 = U+03a9
keycode 26 = ssharp U+1E9E U+017F U+03c2
shiftl keycode 26 = U+2212
altgr shiftl keycode 26 = U+2218
! --------------------------------------------------------------------------
! Row 3 (home row, middle row)
! --------------------------------------------------------------------------
keycode 30 = c
altgr keycode 30 = backslash
shift altgr keycode 30 = U+03c7
shiftl keycode 30 = Home
shift shiftl keycode 30 = Home
altgr shiftl keycode 30 = U+2102
keycode 31 = t
altgr keycode 31 = slash
shift altgr keycode 31 = U+03c4
shiftl keycode 31 = Left
shift shiftl keycode 31 = Left
altgr shiftl keycode 31 = U+2202
keycode 32 = i
altgr keycode 32 = braceleft
shift altgr keycode 32 = U+03b9
shiftl keycode 32 = Down
shift shiftl keycode 32 = Down
altgr shiftl keycode 32 = U+222b
keycode 33 = e
altgr keycode 33 = braceright
shift altgr keycode 33 = U+03b5
shiftl keycode 33 = Right
shift shiftl keycode 33 = Right
altgr shiftl keycode 33 = U+2203
keycode 34 = o
altgr keycode 34 = asterisk
shift altgr keycode 34 = U+03bf
shiftl keycode 34 = End
shift shiftl keycode 34 = End
keycode 35 = b
altgr keycode 35 = question
shift altgr keycode 35 = U+03b2
shiftl keycode 35 = questiondown
altgr shiftl keycode 35 = U+21D0
keycode 36 = n
altgr keycode 36 = parenleft
shift altgr keycode 36 = U+03bd
shiftl keycode 36 = four
shift shiftl keycode 36 = four
altgr shiftl keycode 36 = U+2115
keycode 37 = r
altgr keycode 37 = parenright
shift altgr keycode 37 = U+03c1
shiftl keycode 37 = five
shift shiftl keycode 37 = five
altgr shiftl keycode 37 = U+211D
keycode 38 = s
altgr keycode 38 = minus
shift altgr keycode 38 = U+03c3
shiftl keycode 38 = six
shift shiftl keycode 38 = six
altgr shiftl keycode 38 = U+03a3
keycode 39 = g
altgr keycode 39 = colon
shift altgr keycode 39 = U+03b3
shiftl keycode 39 = U+002c
shift shiftl keycode 39 = comma
altgr shiftl keycode 39 = U+0393
keycode 40 = q
altgr keycode 40 = at
shift altgr keycode 40 = U+03D5
shiftl keycode 40 = period
shift shiftl keycode 40 = U+002e
altgr shiftl keycode 40 = U+211A
! --------------------------------------------------------------------------
! Row 4 (lower row)
! --------------------------------------------------------------------------
keycode 44 = f
altgr keycode 44 = numbersign
shift altgr keycode 44 = U+03c6
shiftl keycode 44 = Escape
shift shiftl keycode 44 = Escape
altgr shiftl keycode 44 = U+03a6
keycode 45 = v
altgr keycode 45 = dollar
shiftl keycode 45 = Tab
altgr shiftl keycode 45 = U+221a
keycode 46 = udiaeresis Udiaeresis bar VoidSymbol
shiftl keycode 46 = Insert
shift shiftl keycode 46 = Insert
altgr shiftl keycode 46 = U+222a
keycode 47 = adiaeresis Adiaeresis asciitilde U+03b7
shiftl keycode 47 = Return
shift shiftl keycode 47 = Return
altgr shiftl keycode 47 = U+2135
keycode 48 = odiaeresis Odiaeresis grave U+03F5
altgr shiftl keycode 48 = U+2229
keycode 49 = y
altgr keycode 49 = plus
shift altgr keycode 49 = U+03c5
shiftl keycode 49 = colon
altgr shiftl keycode 49 = U+2207
keycode 50 = z
altgr keycode 50 = percent
shift altgr keycode 50 = U+03b6
shiftl keycode 50 = one
shift shiftl keycode 50 = one
altgr shiftl keycode 50 = U+2124
keycode 51 = comma U+2013 quotedbl U+03F1
shiftl keycode 51 = two
shift shiftl keycode 51 = two
altgr shiftl keycode 51 = U+21D2
keycode 52 = period U+2022 apostrophe U+03D1
shiftl keycode 52 = three
shift shiftl keycode 52 = three
altgr shiftl keycode 52 = U+21A6
keycode 53 = k
altgr keycode 53 = semicolon
shift altgr keycode 53 = U+03ba
shiftl keycode 53 = semicolon
altgr shiftl keycode 53 = multiply

@ -0,0 +1,250 @@
! ----Space key-------------------------------------------------------------
keycode 57 = space space space nobreakspace
shiftl keycode 57 = KP_0
shift shiftl keycode 57 = KP_0
altgr shiftl keycode 57 = U+202F
! ----dead keys-------------------------------------------------------------
keycode 41 = dead_circumflex dead_caron U+21BB U+02DE
shiftl keycode 41 = U+0307
keycode 13 = dead_grave dead_cedilla U+030a VoidSymbol
shiftl keycode 13 = dead_diaeresis
altgr shiftl keycode 13 = U+0304
keycode 27 = dead_acute dead_tilde VoidSymbol VoidSymbol
shiftl keycode 27 = dead_doubleacute
altgr shiftl keycode 27 = dead_breve
! --------------------------------------------------------------------------
! Row 1 (number row)
! --------------------------------------------------------------------------
keycode 2 = one degree onesuperior VoidSymbol
shiftl keycode 2 = ordfeminine
altgr shiftl keycode 2 = notsign
keycode 3 = two section twosuperior VoidSymbol
shiftl keycode 3 = masculine
altgr shiftl keycode 3 = U+2228
keycode 4 = three U+2113 threesuperior VoidSymbol
shiftl keycode 4 = U+2116
altgr shiftl keycode 4 = U+2227
keycode 5 = four guillemotright U+203A U+2640
altgr shiftl keycode 5 = U+22A5
keycode 6 = five guillemotleft U+2039 U+2642
shiftl keycode 6 = periodcentered
altgr shiftl keycode 6 = U+2221
keycode 7 = six dollar cent U+26A5
shiftl keycode 7 = sterling
altgr shiftl keycode 7 = U+2225
keycode 8 = seven U+20ac yen U+03F0
shiftl keycode 8 = currency
altgr shiftl keycode 8 = U+2192
keycode 9 = eight U+201e U+201a U+2329
shiftl keycode 9 = Tab
altgr shiftl keycode 9 = U+221e
keycode 10 = nine U+201c U+2018 U+232a
shiftl keycode 10 = KP_Divide
shift shiftl keycode 10 = KP_Divide
altgr shiftl keycode 10 = U+221d
keycode 11 = zero U+201d U+2019 VoidSymbol
shiftl keycode 11 = KP_Multiply
shift shiftl keycode 11 = KP_Multiply
keycode 12 = minus U+2014 VoidSymbol U+2011
shiftl keycode 12 = KP_Subtract
shift shiftl keycode 12 = KP_Subtract
altgr shiftl keycode 12 = hyphen
! --------------------------------------------------------------------------
! Row 2 (upper row)
! --------------------------------------------------------------------------
keycode 16 = k
altgr keycode 16 = U+2026
shift altgr keycode 16 = U+03ba
shiftl keycode 16 = Prior
shift shiftl keycode 16 = Prior
altgr shiftl keycode 16 = multiply
keycode 17 = period U+2022
altgr keycode 17 = underscore
shiftl keycode 17 = BackSpace
shift shiftl keycode 17 = BackSpace
altgr shiftl keycode 17 = U+2282
keycode 18 = o
altgr keycode 18 = bracketleft
shift altgr keycode 18 = U+03bb
shiftl keycode 18 = Up
shift shiftl keycode 18 = Up
altgr shiftl keycode 18 = U+222a
keycode 19 = comma U+2013
altgr keycode 19 = bracketright
shift altgr keycode 19 = U+03D1
shiftl keycode 19 = Remove
shift shiftl keycode 19 = Remove
altgr shiftl keycode 19 = U+21A6
keycode 20 = y
altgr keycode 20 = asciicircum
shift altgr keycode 20 = U+03b7
shiftl keycode 20 = Next
shift shiftl keycode 20 = Next
altgr shiftl keycode 20 = U+2135
keycode 21 = v
altgr keycode 21 = exclam
shift altgr keycode 21 = U+221a
shiftl keycode 21 = exclamdown
keycode 22 = g
altgr keycode 22 = less
shift altgr keycode 22 = U+03b3
shiftl keycode 22 = KP_7
shift shiftl keycode 22 = KP_7
altgr shiftl keycode 22 = U+0393
keycode 23 = c
altgr keycode 23 = greater
shift altgr keycode 23 = U+03c7
shiftl keycode 23 = KP_8
shift shiftl keycode 23 = KP_8
altgr shiftl keycode 23 = U+2102
keycode 24 = l
altgr keycode 24 = equal
shift altgr keycode 24 = U+03bb
shiftl keycode 24 = KP_9
shift shiftl keycode 24 = KP_9
altgr shiftl keycode 24 = U+039b
keycode 25 = ssharp U+1E9E
altgr keycode 25 = ampersand
shift altgr keycode 25 = U+03b8
shiftl keycode 25 = KP_Add
shift shiftl keycode 25 = KP_Add
altgr shiftl keycode 25 = U+0398
keycode 26 = z
altgr keycode 26 = U+017F
shift altgr keycode 26 = U+03c6
shiftl keycode 26 = U+2212
altgr shiftl keycode 26 = U+03a6
! --------------------------------------------------------------------------
! Row 3 (home row, middle row)
! --------------------------------------------------------------------------
keycode 30 = h
altgr keycode 30 = backslash
shift altgr keycode 30 = U+03c8
shiftl keycode 30 = Home
shift shiftl keycode 30 = Home
altgr shiftl keycode 30 = U+03a8
keycode 31 = a
altgr keycode 31 = slash
shift altgr keycode 31 = U+03b9
shiftl keycode 31 = Left
shift shiftl keycode 31 = Left
altgr shiftl keycode 31 = U+222b
keycode 32 = e
altgr keycode 32 = braceleft
shift altgr keycode 32 = U+03b5
shiftl keycode 32 = Down
shift shiftl keycode 32 = Down
altgr shiftl keycode 32 = U+2203
keycode 33 = i
altgr keycode 33 = braceright
shift altgr keycode 33 = U+03b1
shiftl keycode 33 = Right
shift shiftl keycode 33 = Right
altgr shiftl keycode 33 = U+2200
keycode 34 = u
altgr keycode 34 = asterisk
shift altgr keycode 34 = U+03bf
shiftl keycode 34 = End
shift shiftl keycode 34 = End
keycode 35 = d
altgr keycode 35 = question
shift altgr keycode 35 = U+03b4
shiftl keycode 35 = questiondown
altgr shiftl keycode 35 = U+0394
keycode 36 = t
altgr keycode 36 = parenleft
shift altgr keycode 36 = U+03c4
shiftl keycode 36 = KP_4
shift shiftl keycode 36 = KP_4
altgr shiftl keycode 36 = U+2202
keycode 37 = r
altgr keycode 37 = parenright
shift altgr keycode 37 = U+03c1
shiftl keycode 37 = KP_5
shift shiftl keycode 37 = KP_5
altgr shiftl keycode 37 = U+211D
keycode 38 = n
altgr keycode 38 = minus
shift altgr keycode 38 = U+03bd
shiftl keycode 38 = KP_6
shift shiftl keycode 38 = KP_6
altgr shiftl keycode 38 = U+2115
keycode 39 = s
altgr keycode 39 = colon
shift altgr keycode 39 = U+03c3
shiftl keycode 39 = U+002c
shift shiftl keycode 39 = comma
altgr shiftl keycode 39 = U+03a3
keycode 40 = f
altgr keycode 40 = at
shift altgr keycode 40 = U+03c2
shiftl keycode 40 = period
shift shiftl keycode 40 = U+002e
altgr shiftl keycode 40 = U+2218
! --------------------------------------------------------------------------
! Row 4 (lower row)
! --------------------------------------------------------------------------
keycode 44 = x
altgr keycode 44 = numbersign
shift altgr keycode 44 = U+03be
shiftl keycode 44 = Escape
shift shiftl keycode 44 = Escape
altgr shiftl keycode 44 = U+039e
keycode 45 = q
altgr keycode 45 = dollar
shift altgr keycode 45 = U+03c5
shiftl keycode 45 = Tab
altgr shiftl keycode 45 = U+2207
keycode 46 = adiaeresis Adiaeresis
altgr keycode 46 = bar
shift altgr keycode 46 = U+03F5
shiftl keycode 46 = Insert
shift shiftl keycode 46 = Insert
altgr shiftl keycode 46 = U+2229
keycode 47 = udiaeresis Udiaeresis
altgr keycode 47 = asciitilde
shift altgr keycode 47 = U+03F1
shiftl keycode 47 = Return
shift shiftl keycode 47 = Return
altgr shiftl keycode 47 = U+21D2
keycode 48 = odiaeresis Odiaeresis
altgr keycode 48 = grave
shift altgr keycode 48 = U+03D5
shiftl keycode 48 = Caps_Lock
altgr shiftl keycode 48 = U+211A
keycode 49 = b
altgr keycode 49 = plus
shift altgr keycode 49 = U+03b2
shiftl keycode 49 = colon
altgr shiftl keycode 49 = U+21D0
keycode 50 = p
altgr keycode 50 = percent
shift altgr keycode 50 = U+03c0
shiftl keycode 50 = KP_1
shift shiftl keycode 50 = KP_1
altgr shiftl keycode 50 = U+03a0
keycode 51 = w
altgr keycode 51 = quotedbl
shift altgr keycode 51 = U+03c9
shiftl keycode 51 = KP_2
shift shiftl keycode 51 = KP_2
altgr shiftl keycode 51 = U+03a9
keycode 52 = m
altgr keycode 52 = apostrophe
shift altgr keycode 52 = U+03bc
shiftl keycode 52 = KP_3
shift shiftl keycode 52 = KP_3
altgr shiftl keycode 52 = U+21d4
keycode 53 = j
altgr keycode 53 = semicolon
shift altgr keycode 53 = U+03b6
shiftl keycode 53 = semicolon
altgr shiftl keycode 53 = U+2124

@ -0,0 +1,237 @@
! ----Space key-------------------------------------------------------------
keycode 57 = space space space nobreakspace
shiftl keycode 57 = zero
shift shiftl keycode 57 = zero
altgr shiftl keycode 57 = U+202F
! ----dead keys-------------------------------------------------------------
keycode 41 = dead_circumflex dead_caron U+21BB U+02DE
shiftl keycode 41 = U+0307
keycode 13 = dead_grave dead_cedilla U+030a VoidSymbol
shiftl keycode 13 = dead_diaeresis
altgr shiftl keycode 13 = macron
keycode 27 = dead_acute dead_tilde VoidSymbol VoidSymbol
shiftl keycode 27 = dead_doubleacute
altgr shiftl keycode 27 = dead_breve
! --------------------------------------------------------------------------
! Row 1 (number row)
! --------------------------------------------------------------------------
keycode 2 = one degree onesuperior VoidSymbol
shiftl keycode 2 = ordfeminine
altgr shiftl keycode 2 = notsign
keycode 3 = two section twosuperior VoidSymbol
shiftl keycode 3 = masculine
altgr shiftl keycode 3 = U+2228
keycode 4 = three U+2113 threesuperior VoidSymbol
shiftl keycode 4 = U+2116
altgr shiftl keycode 4 = U+2227
keycode 5 = four guillemotright U+203A U+2640
altgr shiftl keycode 5 = U+22A5
keycode 6 = five guillemotleft U+2039 U+2642
shiftl keycode 6 = periodcentered
altgr shiftl keycode 6 = U+2221
keycode 7 = six dollar cent U+26A5
shiftl keycode 7 = sterling
altgr shiftl keycode 7 = U+2225
keycode 8 = seven U+20ac yen U+03F0
shiftl keycode 8 = currency
altgr shiftl keycode 8 = U+2192
keycode 9 = eight U+201e U+201a U+2329
shiftl keycode 9 = Tab
altgr shiftl keycode 9 = U+221e
keycode 10 = nine U+201c U+2018 U+232a
shiftl keycode 10 = slash
shift shiftl keycode 10 = slash
altgr shiftl keycode 10 = U+221d
keycode 11 = zero U+201d U+2019 VoidSymbol
shiftl keycode 11 = asterisk
shift shiftl keycode 11 = asterisk
keycode 12 = ssharp U+1E9E VoidSymbol U+03c2
shiftl keycode 12 = minus
shift shiftl keycode 12 = minus
altgr shiftl keycode 12 = U+2218
! --------------------------------------------------------------------------
! Row 2 (upper row)
! --------------------------------------------------------------------------
keycode 16 = q
altgr keycode 16 = U+2026
shift altgr keycode 16 = U+03D5
shiftl keycode 16 = Prior
shift shiftl keycode 16 = Prior
altgr shiftl keycode 16 = U+211A
keycode 17 = w
altgr keycode 17 = underscore
shift altgr keycode 17 = U+03c9
shiftl keycode 17 = BackSpace
shift shiftl keycode 17 = BackSpace
altgr shiftl keycode 17 = U+03a9
keycode 18 = e
altgr keycode 18 = bracketleft
shift altgr keycode 18 = U+03b5
shiftl keycode 18 = Up
shift shiftl keycode 18 = Up
altgr shiftl keycode 18 = U+2203
keycode 19 = r
altgr keycode 19 = bracketright
shift altgr keycode 19 = U+03c1
shiftl keycode 19 = Remove
shift shiftl keycode 19 = Remove
altgr shiftl keycode 19 = U+211D
keycode 20 = t
altgr keycode 20 = asciicircum
shift altgr keycode 20 = U+03c4
shiftl keycode 20 = Next
shift shiftl keycode 20 = Next
altgr shiftl keycode 20 = U+2202
keycode 21 = z
altgr keycode 21 = exclam
shift altgr keycode 21 = U+03b6
shiftl keycode 21 = exclamdown
altgr shiftl keycode 21 = U+2124
keycode 22 = u
altgr keycode 22 = less
shiftl keycode 22 = seven
shift shiftl keycode 22 = seven
altgr shiftl keycode 22 = U+2282
keycode 23 = i
altgr keycode 23 = greater
shift altgr keycode 23 = U+03b9
shiftl keycode 23 = eight
shift shiftl keycode 23 = eight
altgr shiftl keycode 23 = U+222b
keycode 24 = o
altgr keycode 24 = equal
shift altgr keycode 24 = U+03bf
shiftl keycode 24 = nine
shift shiftl keycode 24 = nine
keycode 25 = p
altgr keycode 25 = ampersand
shift altgr keycode 25 = U+03c0
shiftl keycode 25 = plus
shift shiftl keycode 25 = plus
altgr shiftl keycode 25 = U+03a0
keycode 26 = udiaeresis Udiaeresis U+017F VoidSymbol
shiftl keycode 26 = U+2212
altgr shiftl keycode 26 = U+222a
! --------------------------------------------------------------------------
! Row 3 (home row, middle row)
! --------------------------------------------------------------------------
keycode 30 = a
altgr keycode 30 = backslash
shift altgr keycode 30 = U+03b1
shiftl keycode 30 = Home
shift shiftl keycode 30 = Home
altgr shiftl keycode 30 = U+2200
keycode 31 = s
altgr keycode 31 = slash
shift altgr keycode 31 = U+03c3
shiftl keycode 31 = Left
shift shiftl keycode 31 = Left
altgr shiftl keycode 31 = U+03a3
keycode 32 = d
altgr keycode 32 = braceleft
shift altgr keycode 32 = U+03b4
shiftl keycode 32 = Down
shift shiftl keycode 32 = Down
altgr shiftl keycode 32 = U+0394
keycode 33 = f
altgr keycode 33 = braceright
shift altgr keycode 33 = U+03c6
shiftl keycode 33 = Right
shift shiftl keycode 33 = Right
altgr shiftl keycode 33 = U+03a6
keycode 34 = g
altgr keycode 34 = asterisk
shift altgr keycode 34 = U+03b3
shiftl keycode 34 = End
shift shiftl keycode 34 = End
altgr shiftl keycode 34 = U+0393
keycode 35 = h
altgr keycode 35 = question
shift altgr keycode 35 = U+03c8
shiftl keycode 35 = questiondown
altgr shiftl keycode 35 = U+03a8
keycode 36 = j
altgr keycode 36 = parenleft
shift altgr keycode 36 = U+03b8
shiftl keycode 36 = four
shift shiftl keycode 36 = four
altgr shiftl keycode 36 = U+0398
keycode 37 = k
altgr keycode 37 = parenright
shift altgr keycode 37 = U+03ba
shiftl keycode 37 = five
shift shiftl keycode 37 = five
altgr shiftl keycode 37 = multiply
keycode 38 = l
altgr keycode 38 = minus
shift altgr keycode 38 = U+03bb
shiftl keycode 38 = six
shift shiftl keycode 38 = six
altgr shiftl keycode 38 = U+039b
keycode 39 = odiaeresis Odiaeresis colon U+03F5
shiftl keycode 39 = U+002c
shift shiftl keycode 39 = comma
altgr shiftl keycode 39 = U+2229
keycode 40 = adiaeresis Adiaeresis at U+03b7
shiftl keycode 40 = period
shift shiftl keycode 40 = U+002e
altgr shiftl keycode 40 = U+2135
! --------------------------------------------------------------------------
! Row 4 (lower row)
! --------------------------------------------------------------------------
keycode 44 = y
altgr keycode 44 = numbersign
shift altgr keycode 44 = U+03c5
shiftl keycode 44 = Escape
shift shiftl keycode 44 = Escape
altgr shiftl keycode 44 = U+2207
keycode 45 = x
altgr keycode 45 = dollar
shift altgr keycode 45 = U+03be
shiftl keycode 45 = Tab
altgr shiftl keycode 45 = U+039e
keycode 46 = c
altgr keycode 46 = bar
shift altgr keycode 46 = U+03c7
shiftl keycode 46 = Insert
shift shiftl keycode 46 = Insert
altgr shiftl keycode 46 = U+2102
keycode 47 = v
altgr keycode 47 = asciitilde
shift altgr keycode 47 = U+03b7
shiftl keycode 47 = Return
shift shiftl keycode 47 = Return
altgr shiftl keycode 47 = U+221a
keycode 48 = b
altgr keycode 48 = grave
shift altgr keycode 48 = U+03b2
altgr shiftl keycode 48 = U+21D0
keycode 49 = n
altgr keycode 49 = plus
shift altgr keycode 49 = U+03bd
shiftl keycode 49 = colon
altgr shiftl keycode 49 = U+2115
keycode 50 = m
altgr keycode 50 = percent
shift altgr keycode 50 = U+03bc
shiftl keycode 50 = one
shift shiftl keycode 50 = one
altgr shiftl keycode 50 = U+2124
keycode 51 = comma U+2013 quotedbl U+03F1
shiftl keycode 51 = two
shift shiftl keycode 51 = two
altgr shiftl keycode 51 = U+21D2
keycode 52 = period U+2022 apostrophe U+03D1
shiftl keycode 52 = three
shift shiftl keycode 52 = three
altgr shiftl keycode 52 = U+21A6
keycode 53 = minus U+2014 semicolon hyphen
shiftl keycode 53 = semicolon
altgr shiftl keycode 53 = U+21d4

@ -0,0 +1,490 @@
! adnw.map - German AdNW Keyboard Layout
!
keymaps 0-18
strings as usual
compose as usual
alt_is_meta
! --------------------------------------------------------------------------
! Modifier definitions
! --------------------------------------------------------------------------
keycode 42 = Shift
# shift keycode 42 = Caps_Lock
keycode 54 = Shift
# shift keycode 54 = Caps_Lock
keycode 58 = AltGr
# altgr keycode 58 = AltGr_Lock
keycode 43 = AltGr
# altgr keycode 43 = AltGr_Lock
keycode 86 = ShiftL
# shiftl keycode 86 = ShiftL_Lock
keycode 100 = ShiftL
# shiftl keycode 100 = ShiftL_Lock
keycode 1 = Escape
shift altgr keycode 1 = Meta_Escape
! --------------------------------------------------------------------------
! function keys
! --------------------------------------------------------------------------
! ----Backspace-------------------------------------------------------------
keycode 14 = Delete
! ----Return Enter----------------------------------------------------------
keycode 28 = Return