summaryrefslogtreecommitdiffstats
path: root/doc/keyboard-test.txt
blob: d59499f72c83fcc115dbf70b48e60b40dd66880c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Test protocol for keyboard handling
===================================

Platform specific tests/issues are marked with [].

Client
------

- Normal symbols:

  - ASCII characters
  - Latin 1 character
  - Unicode BMP characters
  - Unicode non-BMP characters

- Dead keys:

  - Grave
  - Acute
  - Circumflex
  - Tilde
  - Macron
  - Breve
  - Dot above
  - Diaeresis
  - Ring above
  - Double acute
  - Caron
  - Cedilla
  - Ogonek
  - Ypogegrammeni
  - Katakana voiced mark
  - Katakana semi-voiced mark
  - Dialytika tonos
  - FIXME: Many more that we currently probably don't support

  - No composition on client

- Modifiers:

  - CapsLock, NumLock (sent but ignored by server)
  - Shift, Ctrl
  - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win)
  - Left/right identification (FIXME: broken for Shift on Win)
  - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [Mac]
  - Meta and Hyper sends Super [X11]

  - CapsLock, Shift and AltGr affect symbol lookup
  - NumLock affects symbol lookup [Win, X11]
  - Ctrl does not affect symbol lookup
  - Shift inverts NumLock behaviour [X11]
  - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent)
  - CtrlL+AltR fake release [Win]
  - Ctrl+Alt+any (note behaviour above though)
  - Ctrl+AltGr+any (FIXME: broken on Win)
  - "Shift press, A press, Shift release, A release" should not send "a release"

- Numpad:

  - Numpad specific symbols are sent
  - Affected by NumLock
  - Decimal key should send Decimal for layouts with . as a symbol, and
    Separator for layouts with , as a symbol

- Multimedia keys:

  - Back, Forward, Refresh, Stop
  - HomePage, Search, Favourites
  - Mail, Calculator
  - Volume up, down, mute
  - Media next, previous, stop, play
  - Sleep
  - FIXME: probably more keys exist

- Non-character keys:

  - F1-F24
  - Tab, Space, Backspace, Return
  - LeftTab sends Tab
  - Esc, PrntScrn, ScrollLock, Pause
  - Insert, Delete, Home, End, PageUp, PageDown
  - Arrow keys
  - Menu
  - Alt+PrntScrn sends Sys_Req [Win]

- French layout (AZERTY and inverted shift behaviour for many keys)

- Key repeat should not send repeated release events

- Keys are released on loss of focus

- Local layout changes are respected

- Local input methods are disabled/enabled with focus

- System keys should be grabbed in full screen

  The exact keys depends on the system and configuration, but it
  is usually variants of these:

  - Alt+Tab
  - Super (and Super+other)
  - Multimedia keys
  - Ctrl+Alt+Delete
  - Ctrl+Esc
  - F8-F12

- Virtual keyboard (as much of the above as is possible)