Keys Emitted by Qw(Az)erty Keyboard
Chris Ahlstrom
2021-08-04 to 2021-12-12

    QWERTY        AZERTY
x   Key '`' 0x60: Key 'Null_ff' text = '²' scan code = 0x31; key code = 0xb2
*   Key '1' 0x31: Key '&' 0x26: text = '&' scan code = 0xa; key code = 0x26
*   Key 'q' 0x71: Key 'a' 0x61: text = 'a' scan code = 0x18; key code = 0x61
*   Key 'a' 0x61: Key 'q' 0x71: text = 'q' scan code = 0x26; key code = 0x71
*   Key 'z' 0x7a: Key 'w' 0x77: text = 'w' scan code = 0x34; key code = 0x77
x   Key '2' 0x32: Key 'Null_ff' text = 'é' scan code = 0xb; key code = 0xe9
*   Key 'w' 0x77: Key 'z' 0x7a: text = 'z' scan code = 0x19; key code = 0x7a
    Key 's' 0x73: Key 's' 0x73: text = 's' scan code = 0x27; key code = 0x73
    Key 'x' 0x78: Key 'x' 0x78: text = 'x' scan code = 0x35; key code = 0x78
*   Key '3' 0x33: Key '"' 0x22: text = '"' scan code = 0xc; key code = 0x22
    Key 'e' 0x65: Key 'e' 0x65: text = 'e' scan code = 0x1a; key code = 0x65
    Key 'd' 0x64: Key 'd' 0x64: text = 'd' scan code = 0x28; key code = 0x64
    Key 'c' 0x63: Key 'c' 0x63: text = 'c' scan code = 0x36; key code = 0x63
*   Key '4' 0x34: Key ''' 0x27: text = ''' scan code = 0xd; key code = 0x27
    Key 'r' 0x72: Key 'r' 0x72: text = 'r' scan code = 0x1b; key code = 0x72
    Key 'f' 0x66: Key 'f' 0x66: text = 'f' scan code = 0x29; key code = 0x66
    Key 'v' 0x76: Key 'v' 0x76: text = 'v' scan code = 0x37; key code = 0x76
*   Key '5' 0x35: Key '(' 0x28: text = '(' scan code = 0xe; key code = 0x28
    Key 't' 0x74: Key 't' 0x74: text = 't' scan code = 0x1c; key code = 0x74
    Key 'g' 0x67: Key 'g' 0x67: text = 'g' scan code = 0x2a; key code = 0x67
    Key 'b' 0x62: Key 'b' 0x62: text = 'b' scan code = 0x38; key code = 0x62
*   Key '6' 0x36: Key '-' 0x2d: text = '-' scan code = 0xf; key code = 0x2d
    Key 'y' 0x79: Key 'y' 0x79: text = 'y' scan code = 0x1d; key code = 0x79
    Key 'h' 0x68: Key 'h' 0x68: text = 'h' scan code = 0x2b; key code = 0x68
    Key 'n' 0x6e: Key 'n' 0x6e: text = 'n' scan code = 0x39; key code = 0x6e
x   Key '7' 0x37: Key 'Null_ff' text = 'è' scan code = 0x10; key code = 0xe8
    Key 'u' 0x75: Key 'u' 0x75: text = 'u' scan code = 0x1e; key code = 0x75
    Key 'j' 0x6a: Key 'j' 0x6a: text = 'j' scan code = 0x2c; key code = 0x6a
    Key 'm' 0x6d: Key ',' 0x2c: text = ',' scan code = 0x3a; key code = 0x2c
*   Key '8' 0x38: Key '`' 0x60: text = '_' scan code = 0x11; key code = 0x5f
    Key 'i' 0x69: Key 'i' 0x69: text = 'i' scan code = 0x1f; key code = 0x69
    Key 'k' 0x6b: Key 'k' 0x6b: text = 'k' scan code = 0x2d; key code = 0x6b
*   Key ',' 0x2c: Key ';' 0x3b: text = ';' scan code = 0x3b; key code = 0x3b
x   Key '9' 0x39: Key 'Null_ff' text = 'ç' scan code = 0x12; key code = 0xe7
    Key 'o' 0x6f: Key 'o' 0x6f: text = 'o' scan code = 0x20; key code = 0x6f
    Key 'l' 0x6c: Key 'l' 0x6c: text = 'l' scan code = 0x2e; key code = 0x6c
*   Key '.' 0x2e: Key ':' 0x3a: text = ':' scan code = 0x3c; key code = 0x3a
x   Key '0' 0x30: Key 'Null_ff' text = 'à' scan code = 0x13; key code = 0xe0
    Key 'p' 0x70: Key 'p' 0x70: text = 'p' scan code = 0x21; key code = 0x70
*   Key ';' 0x3b: Key 'm' 0x6d: text = 'm' scan code = 0x2f; key code = 0x6d
*   Key '/' 0x2f: Key '!' 0x21: text = '!' scan code = 0x3d; key code = 0x21
*   Key '-' 0x2d: Key ')' 0x29: text = ')' scan code = 0x14; key code = 0x29
?   Key '[' 0x5b: Key 'Null_ff' text = '' scan code = 0x22; key code = 0xfe52
x   Key ''' 0x27: Key 'Null_ff' text = 'ù' scan code = 0x30; key code = 0xf9
    Key '=' 0x3d: Key '=' 0x3d: text = '=' scan code = 0x15; key code = 0x3d
*   Key ']' 0x5d: Key '$' 0x24: text = '$' scan code = 0x23; key code = 0x24
*   Key '\' 0x5c: Key '+' 0x2b: text = '*' scan code = 0x33; key code = 0x2a
                                                                           
    QWERTY        AZERTY (shifted)
    Key '~' 0x7e: Key '~' 0x7e: text = '~' scan code = 0x31; key code = 0x7e
*S  Key '!' 0x21: Key '1' 0x31: text = '1' scan code = 0xa; key code = 0x31
*   Key 'Q' 0x51: Key 'A' 0x41: text = 'A' scan code = 0x18; key code = 0x41
*   Key 'A' 0x41: Key 'Q' 0x51: text = 'Q' scan code = 0x26; key code = 0x51
*   Key 'Z' 0x5a: Key 'W' 0x57: text = 'W' scan code = 0x34; key code = 0x57
*S  Key '@' 0x40: Key '2' 0x32: text = '2' scan code = 0xb; key code = 0x32
*   Key 'W' 0x57: Key 'Z' 0x5a: text = 'Z' scan code = 0x19; key code = 0x5a
    Key 'S' 0x53: Key 'S' 0x53: text = 'S' scan code = 0x27; key code = 0x53
    Key 'X' 0x58: Key 'X' 0x58: text = 'X' scan code = 0x35; key code = 0x58
*S  Key '#' 0x23: Key '3' 0x33: text = '3' scan code = 0xc; key code = 0x33
    Key 'E' 0x45: Key 'E' 0x45: text = 'E' scan code = 0x1a; key code = 0x45
    Key 'D' 0x44: Key 'D' 0x44: text = 'D' scan code = 0x28; key code = 0x44
    Key 'C' 0x43: Key 'C' 0x43: text = 'C' scan code = 0x36; key code = 0x43
*S  Key '$' 0x24: Key '4' 0x34: text = '4' scan code = 0xd; key code = 0x34
    Key 'R' 0x52: Key 'R' 0x52: text = 'R' scan code = 0x1b; key code = 0x52
    Key 'F' 0x46: Key 'F' 0x46: text = 'F' scan code = 0x29; key code = 0x46
    Key 'V' 0x56: Key 'V' 0x56: text = 'V' scan code = 0x37; key code = 0x56
*S  Key '%' 0x25: Key '5' 0x35: text = '5' scan code = 0xe; key code = 0x35
    Key 'T' 0x54: Key 'T' 0x54: text = 'T' scan code = 0x1c; key code = 0x54
    Key 'G' 0x47: Key 'G' 0x47: text = 'G' scan code = 0x2a; key code = 0x47
    Key 'B' 0x42: Key 'B' 0x42: text = 'B' scan code = 0x38; key code = 0x42
*S  Key '^' 0x5e: Key '6' 0x36: text = '6' scan code = 0xf; key code = 0x36
    Key 'Y' 0x59: Key 'Y' 0x59: text = 'Y' scan code = 0x1d; key code = 0x59
    Key 'H' 0x48: Key 'H' 0x48: text = 'H' scan code = 0x2b; key code = 0x48
    Key 'N' 0x4e: Key 'N' 0x4e: text = 'N' scan code = 0x39; key code = 0x4e
*S  Key '&' 0x26: Key '7' 0x37: text = '7' scan code = 0x10; key code = 0x37
    Key 'U' 0x55: Key 'U' 0x55: text = 'U' scan code = 0x1e; key code = 0x55
    Key 'J' 0x4a: Key 'J' 0x4a: text = 'J' scan code = 0x2c; key code = 0x4a
    Key 'M' 0x4d: Key '?' 0x3f: text = '?' scan code = 0x3a; key code = 0x3f
*S  Key '*' 0x2a: Key '8' 0x38: text = '8' scan code = 0x11; key code = 0x38
    Key 'I' 0x49: Key 'I' 0x49: text = 'I' scan code = 0x1f; key code = 0x49
    Key 'K' 0x4b: Key 'K' 0x4b: text = 'K' scan code = 0x2d; key code = 0x4b
*   Key '<' 0x3c: Key '/' 0x2f: text = '.' scan code = 0x3b; key code = 0x2e
*?  Key '(' 0x28: Key '9' 0x39: text = '9' scan code = 0x12; key code = 0x39
    Key 'O' 0x4f: Key 'O' 0x4f: text = 'O' scan code = 0x20; key code = 0x4f
    Key 'L' 0x4c: Key 'L' 0x4c: text = 'L' scan code = 0x2e; key code = 0x4c
*   Key '>' 0x3e: Key '0' 0x30: text = '/' scan code = 0x3c; key code = 0x2f
*   Key ')' 0x29: Key '0' 0x30: text = '0' scan code = 0x13; key code = 0x30
    Key 'P' 0x50: Key 'P' 0x50: text = 'P' scan code = 0x21; key code = 0x50
*   Key ':' 0x3a: Key 'M' 0x4d: text = 'M' scan code = 0x2f; key code = 0x4d
x   Key '?' 0x3f: Key 'Null_ff' text = '§' scan code = 0x3d; key code = 0xa7
x   Key '_' 0x5f: Key 'Null_ff' text = '°' scan code = 0x14; key code = 0xb0
?   Key '{' 0x7b: Key 'Null_ff' text = '' scan code = 0x22; key code = 0xfe57
x   Key '"' 0x22: Key '%' 0x25: text = '%' scan code = 0x30; key code = 0x25
    Key '+' 0x2b: Key '+' 0x2b: text = '+' scan code = 0x15; key code = 0x2b
x   Key '}' 0x7d: Key 'Null_ff' text = '£' scan code = 0x23; key code = 0xa3
x   Key '|' 0x7c: Key 'Null_ff' text = 'µ' scan code = 0x33; key code = 0xb5

    Key 'Return' 0x84: text = '
' scan code = 0x24; key code = 0xff0d
    Key 'Super_L' 0xac: text = '' scan code = 0x85; key code = 0xffeb

*   Change the mapping in the simple way.
x   Use an extended code.
S   Shift is the inverse of QWERTY handling.
?   Not sure yet.

For keyboard-layout = azerty, disable use of auto-shift.
Or make it an option, use-auto-shift = false, defaulting to true

// Column 1 is the event->key() value.
// The keycode is the event->nativeVirtualKey().
//
// Letters LC: note the the keycode is the "real" value

Key #0x41 Press   'a' scan = 0x18; keycode = 0x61 ordinal 97
Key #0x42 Press   'b' scan = 0x38; keycode = 0x62 ordinal 98
Key #0x43 Press   'c' scan = 0x36; keycode = 0x63 ordinal 99
 . . .
Key #0x5a Press   'z' scan = 0x19; keycode = 0x7a ordinal 122

// Letters UC

Key #0x41 Press   'A' scan = 0x18; keycode = 0x41 ordinal 65
Key #0x42 Press   'B' scan = 0x38; keycode = 0x42 ordinal 66
Key #0x43 Press   'C' scan = 0x36; keycode = 0x43 ordinal 67
 . . .
Key #0x5a Press   'Z' scan = 0x19; keycode = 0x5a ordinal 90

// Extras letters

Key #0xc0 Press   'à' scan = 0x13; keycode = 0xe0 ordinal 4294967295
Key #0xc7 Press   'ç' scan = 0x12; keycode = 0xe7 ordinal 4294967295
Key #0xc8 Press   'è' scan = 0x10; keycode = 0xe8 ordinal 4294967295
Key #0xc9 Press   'é' scan = 0xb; keycode = 0xe9 ordinal 4294967295
Key #0xd9 Press   'ù' scan = 0x30; keycode = 0xf9 ordinal 4294967295

// Numbers: Available by pressing Shift + key

Key #0x30 Press   '0' scan = 0x13; keycode = 0x30 ordinal 48
Key #0x31 Press   '1' scan = 0xa; keycode = 0x31 ordinal 49
Key #0x32 Press   '2' scan = 0xb; keycode = 0x32 ordinal 50
 . . .
Key #0x39 Press   '9' scan = 0x12; keycode = 0x39 ordinal 57

// Symbols
// Line ends with * when symbol is available by pressing Shift + key

Key #0x26     Press   '&' scan = 0xa;  keycode = 0x26 ordinal 38
Key #0x22     Press   '"' scan = 0xc;  keycode = 0x22 ordinal 34
Key #0x27     Press   ''' scan = 0xd;  keycode = 0x27 ordinal 39
Key #0x28     Press   '(' scan = 0xe;  keycode = 0x28 ordinal 40
Key #0x2d     Press   '-' scan = 0xf;  keycode = 0x2d ordinal 45
Key #0x5f     Press   '_' scan = 0x11; keycode = 0x5f ordinal 96
Key #0x29     Press   ')' scan = 0x14; keycode = 0x29 ordinal 41
Key #0x3d     Press   '=' scan = 0x15; keycode = 0x3d ordinal 61
Key #0x1001252 Press '^' scan = 0x22; keycode = 0xfe52 ordinal 4294967295 ????
Key #0x24     Press   '$' scan = 0x23; keycode = 0x24 ordinal 36
Key #0x2a     Press   '*' scan = 0x33; keycode = 0x2a ordinal 43
Key #0x2c     Press   ',' scan = 0x3a; keycode = 0x2c ordinal 44
Key #0x3b     Press   ';' scan = 0x3b; keycode = 0x3b ordinal 59
Key #0x3a     Press   ':' scan = 0x3c; keycode = 0x3a ordinal 58
Key #0x21     Press   '!' scan = 0x3d; keycode = 0x21 ordinal 33
Key #0xb0     Press   '°' scan = 0x14; keycode = 0xb0 ordinal 176 *
Key #0x2b     Press   '+' scan = 0x15; keycode = 0x2b ordinal 43  *
Key #0x1001257    Press   '¨' scan = 0x22; keycode = 0xfe57 ordinal 4294967295 *
Key #0xa3     Press   '£' scan = 0x23; keycode = 0xa3 ordinal 163 *
Key #0x25     Press   '%' scan = 0x30; keycode = 0x25 ordinal 37 *
Key #0x39c     Press   'µ' scan = 0x33; keycode = 0xb5 ordinal 4294967295 *
Key #0x3f     Press   '?' scan = 0x3a; keycode = 0x3f ordinal 63 *
Key #0x2e     Press   '.' scan = 0x3b; keycode = 0x2e ordinal 47 *
Key #0x2f     Press   '/' scan = 0x3c; keycode = 0x2f ordinal 48 *
Key #0xa7     Press   '§' scan = 0x3d; keycode = 0xa7 ordinal 167 *
Key #0x3c     Press   '<' scan = 0x5e; keycode = 0x3c ordinal 60
Key #0x3e     Press   '>' scan = 0x5e; keycode = 0x3e ordinal 62 *
Key #0xb2     Press   '²' scan = 0x31; keycode = 0xb2 ordinal 178

// Extras symbols
// Available by pressing AltR + key

Key #0x7e   Press   '~' scan = 0xb;  keycode = 0x7e ordinal 126
Key #0x23   Press   '#' scan = 0xc;  keycode = 0x23 ordinal 35
Key #0x7b   Press   '{' scan = 0xd;  keycode = 0x7b ordinal 123
Key #0x5b   Press   '[' scan = 0xe;  keycode = 0x5b ordinal 28
Key #0x7c   Press   '|' scan = 0xf;  keycode = 0x7c ordinal 124
Key #0x60   Press   '`' scan = 0x10; keycode = 0x60 ordinal 96
Key #0x5c   Press   '\' scan = 0x11; keycode = 0x5c ordinal 29
Key #0x5e   Press   '^' scan = 0x12; keycode = 0x5e ordinal 31
Key #0x40   Press   '@' scan = 0x13; keycode = 0x40 ordinal 64
Key #0x5d   Press   ']' scan = 0x14; keycode = 0x5d ordinal 30
Key #0x7d   Press   '}' scan = 0x15; keycode = 0x7d ordinal 125
Key #0xa4   Press   '¤' scan = 0x23; keycode = 0xa4 ordinal 4294967295
Key #0x20ac Press   '€' scan = 0x1a; keycode = 0x20ac ordinal 4294967295

// F keys

Key #0x1000030 Press   'F1'  scan = 0x43; keycode = 0xffbe ordinal 160
Key #0x1000031 Press   'F2'  scan = 0x44; keycode = 0xffbf ordinal 161
Key #0x1000032 Press   'F3'  scan = 0x45; keycode = 0xffc0 ordinal 162
Key #0x1000033 Press   'F4'  scan = 0x46; keycode = 0xffc1 ordinal 183
Key #0x1000034 Press   'F5'  scan = 0x47; keycode = 0xffc2 ordinal 164
Key #0x1000035 Press   'F6'  scan = 0x48; keycode = 0xffc3 ordinal 165
Key #0x1000036 Press   'F7'  scan = 0x49; keycode = 0xffc4 ordinal 166
Key #0x1000037 Press   'F8'  scan = 0x4a; keycode = 0xffc5 ordinal 187
Key #0x1000038 Press   'F9'  scan = 0x4b; keycode = 0xffc6 ordinal 168
Key #0x1000039 Press   'F10' scan = 0x4c; keycode = 0xffc7 ordinal 169
Key #0x100003a Press   'F11' scan = 0x5f; keycode = 0xffc8 ordinal 170
Key #0x100003b Press   'F12' scan = 0x60; keycode = 0xffc9 ordinal 171

// Basic Special keys

Key #0x20      Press   'Space'     scan = 0x41; keycode = 0x20 ordinal 32
Key #0x1000000 Press   'Esc' 	     scan = 0x9; keycode = 0xff1b ordinal 128
Key #0x1000001 Press   'Tab' 	     scan = 0x17; keycode = 0xff09 ordinal 129
Key #0x1000024 Press   'CapsLock'  scan = 0x42; keycode = 0xffe5 ordinal 156
Key #0x1000020 Press   'ShiftL'    scan = 0x32; keycode = 0xffe1 ordinal 152
Key #0x1000020 Release 'ShiftL'    scan = 0x32; keycode = 0xffe1 ordinal 153
Key #0x1000020 Press   'ShiftR'    scan = 0x3e; keycode = 0xffe2 ordinal 152
Key #0x1000020 Release 'ShiftR'    scan = 0x3e; keycode = 0xffe2 ordinal 153
Key #0x1000021 Press   'CtrlL'     scan = 0x25; keycode = 0xffe3 ordinal 153
Key #0x1000021 Release 'CtrlL'     scan = 0x25; keycode = 0xffe3 ordinal 154
Key #0x1000021 Press   'CtrlR'     scan = 0x69; keycode = 0xffe4 ordinal 153
Key #0x1000021 Release 'CtrlR'     scan = 0x69; keycode = 0xffe4 ordinal 154
Key #0x1000023 Press   'AltL'      scan = 0x40; keycode = 0xffe9 ordinal 155
Key #0x1001103 Press   'AltR'      scan = 0x6c; keycode = 0xfe03 ordinal 4294967295
Key #0x1000022 Press   'SuperR'    scan = 0x86; keycode = 0xffec ordinal 154
Key #0x1000055 Press   'Meta'      scan = 0x87; keycode = 0xff67 ordinal 174
Key #0x1000003 Press   'Backspace' scan = 0x16; keycode = 0xff08 ordinal 131

- Enter/Return returns the following, and no "Key#..." displayed.

   scan = 0x24; keycode = 0xff0d ordinal 132

- SuperL opens the Gnome menu and doesn't display anything

// Extra special keys

Key #0x1000026 Press   'ScrollLock' scan = 0x4e; keycode = 0xff14 ordinal 158
Key #0x1000008 Press   'PauseBreak' scan = 0x7f; keycode = 0xff13 ordinal 136
Key #0x1000006 Press   'Insert'     scan = 0x76; keycode = 0xff63 ordinal 134
Key #0x1000007 Press   'Delete'     scan = 0x77; keycode = 0xffff ordinal 135
Key #0x1000010 Press   'Home'       scan = 0x6e; keycode = 0xff50 ordinal 144
Key #0x1000011 Press   'End'        scan = 0x73; keycode = 0xff57 ordinal 145
Key #0x1000016 Press   'PageUp'     scan = 0x70; keycode = 0xff55 ordinal 150
Key #0x1000017 Press   'PageDown'   scan = 0x75; keycode = 0xff56 ordinal 151

- PrintScreen doesn't display anything

// Arrows

Key #0x1000013 Press   'Up' scan = 0x6f; keycode = 0xff52 ordinal 147
Key #0x1000015 Press   'Down' scan = 0x74; keycode = 0xff54 ordinal 149
Key #0x1000012 Press   'Left' scan = 0x71; keycode = 0xff51 ordinal 146
Key #0x1000014 Press   'Right' scan = 0x72; keycode = 0xff53 ordinal 148

// NumPad

Key #0x31 Press   '1' scan = 0x57; keycode = 0xffb1 ordinal 49
Key #0x32 Press   '2' scan = 0x58; keycode = 0xffb2 ordinal 50
Key #0x33 Press   '3' scan = 0x59; keycode = 0xffb3 ordinal 51
Key #0x34 Press   '4' scan = 0x53; keycode = 0xffb4 ordinal 52
Key #0x35 Press   '5' scan = 0x54; keycode = 0xffb5 ordinal 53
Key #0x36 Press   '6' scan = 0x55; keycode = 0xffb6 ordinal 54
Key #0x37 Press   '7' scan = 0x4f; keycode = 0xffb7 ordinal 55
Key #0x38 Press   '8' scan = 0x50; keycode = 0xffb8 ordinal 56
Key #0x39 Press   '9' scan = 0x51; keycode = 0xffb9 ordinal 57
Key #0x30 Press   '0' scan = 0x5a; keycode = 0xffb0 ordinal 48
Key #0x2e Press   '.' scan = 0x5b; keycode = 0xffae ordinal 47
Key #0x2f Press   '/' scan = 0x6a; keycode = 0xffaf ordinal 213
Key #0x2a Press   '*' scan = 0x3f; keycode = 0xffaa ordinal 208
Key #0x2d Press   '-' scan = 0x52; keycode = 0xffad ordinal 211
Key #0x2b Press   '+' scan = 0x56; keycode = 0xffab ordinal 209

Key #0x1000025 Press   'NumLock' scan = 0x4d; keycode = 0xff7f ordinal 157

Key #0x1000010 Press   'Home' scan = 0x4f; keycode = 0xff95 ordinal 145
Key #0x1000011 Press   'End' scan = 0x57; keycode = 0xff9c ordinal 146
Key #0x1000016 Press   'PageUp' scan = 0x51; keycode = 0xff9a ordinal 151
Key #0x1000017 Press   'PageDown' scan = 0x59; keycode = 0xff9b ordinal 152
Key #0x1000006 Press   'Insert' scan = 0x5a; keycode = 0xff9e ordinal 134
Key #0x1000007 Press   'Del' scan = 0x5b; keycode = 0xff9f ordinal 136
Key #0x1000013 Press   'Up' scan = 0x50; keycode = 0xff97 ordinal 147
Key #0x1000015 Press   'Down' scan = 0x58; keycode = 0xff99 ordinal 149
Key #0x1000012 Press   'Left' scan = 0x53; keycode = 0xff96 ordinal 147
Key #0x1000014 Press   'Right' scan = 0x55; keycode = 0xff98 ordinal 148

- Keypad-Enter returns  scan = 0x68; keycode = 0xff8d ordinal 133",
  no Key#... displayed.


# vim: sw=4 ts=4 wm=8 et ft=sh
