blob: 914b8ebf0115e6dbd61531ffb4697f4feb65f26f [file] [log] [blame]
Pierre Ossmanefd42612014-09-17 13:55:51 +02001Test protocol for keyboard handling
2===================================
3
4Platform specific tests/issues are marked with [].
5
Pierre Ossmanb6116dd2016-06-10 15:03:13 +02006These tests are primarily about what is sent over the protocol and some
7may be difficult or impossible to test using normal applications. In
8these cases you can turn on debug logging in either the client or the
9server by specifying "-Log *:stderr:100".
10
11We currently have a limitation in Xvnc where it can run out of symbols,
12resulting in nothing being sent to the applications. Just run setxkbmap
13with any layout to reset the symbol table.
14
Pierre Ossman54338082017-09-18 16:22:41 +020015Client (classic, non-raw, mode)
16-------------------------------
Pierre Ossmanefd42612014-09-17 13:55:51 +020017
18- Normal symbols:
19
20 - ASCII characters
21 - Latin 1 character
22 - Unicode BMP characters
Pierre Ossman93454d92016-06-10 15:08:52 +020023 - Unicode non-BMP characters (does any layout actually have these?)
Pierre Ossmanefd42612014-09-17 13:55:51 +020024
25- Dead keys:
26
Pierre Ossmanb6116dd2016-06-10 15:03:13 +020027 These are not available on a single layout, so you need to switch to
28 test everything. The useful layouts also differ per platform:
29
30 X11: US International for most, Greek for some specific diacretics
31 Win: US International, Czech, Greek Polytonic, Vietnamese
Pierre Ossman93454d92016-06-10 15:08:52 +020032 OS X: ABC Extended (FIXME: lots of broken keys),
33 Greek (FIXME: cannot be used with TigerVNC)
Pierre Ossmanb6116dd2016-06-10 15:03:13 +020034
Pierre Ossmanefd42612014-09-17 13:55:51 +020035 - Grave
36 - Acute
37 - Circumflex
38 - Tilde
Pierre Ossman93454d92016-06-10 15:08:52 +020039 - Macron (FIXME: broken on Win)
Pierre Ossmanefd42612014-09-17 13:55:51 +020040 - Breve
41 - Dot above
Pierre Ossman30e34012016-06-10 15:06:21 +020042 - Dot below
Pierre Ossmanefd42612014-09-17 13:55:51 +020043 - Diaeresis
44 - Ring above
45 - Double acute
46 - Caron
47 - Cedilla
48 - Ogonek
Pierre Ossman93454d92016-06-10 15:08:52 +020049 - Ypogegrammeni (iota below) (FIXME: broken on Win)
50 - Dialytika tonos [Win] (Diaresis on X11, and maybe OS X?)
51 - Comma above (FIXME: broken on Win)
52 - Reversed comma above (FIXME: broken on Win)
53 - Horn [X11?]
54 - Hook above [Win?]
55 - Hook below [X11?, Win?]
56 - Dakuten (Katakana voiced mark) (Only Input Methods layouts?)
57 - Handakuten (Katakana semi-voiced mark) (Only Input Methods layouts?)
Pierre Ossmanefd42612014-09-17 13:55:51 +020058 - FIXME: Many more that we currently probably don't support
59
60 - No composition on client
61
62- Modifiers:
63
Pierre Ossmanb6116dd2016-06-10 15:03:13 +020064 X11: You can usually toggle Hyper/Super and Compose/Scroll_Lock using
65 XKB options.
66
Pierre Ossman671d05d2017-09-18 16:22:09 +020067 - CapsLock, NumLock
Pierre Ossmanefd42612014-09-17 13:55:51 +020068 - Shift, Ctrl
69 - Alt, AltGr, Super [Win, X11] (FIXME: AltGr broken on Win)
Pierre Ossmanf1013e42016-06-10 15:04:33 +020070 - Meta [X11]
Pierre Ossmanefd42612014-09-17 13:55:51 +020071 - Left/right identification (FIXME: broken for Shift on Win)
Pierre Ossman93454d92016-06-10 15:08:52 +020072 - CmdL => AltL, CmdR => SuperL, AltL => ModeSwitch, AltR => Level3Shift [OS X]
Peter Åstrand (astrand)f3ff0f12015-10-14 13:47:28 +020073 - Hyper sends Super [X11]
Pierre Ossmanefd42612014-09-17 13:55:51 +020074
75 - CapsLock, Shift and AltGr affect symbol lookup
Pierre Ossmanefd42612014-09-17 13:55:51 +020076 - Ctrl does not affect symbol lookup
Pierre Ossmanab2224f2016-06-10 15:22:44 +020077 - CtrlL+AltR is fake released to compensate for Windows' AltGr magic [Win]
78 - Ctrl+Alt+<ANY> sends the same symbol as <ANY> (note behaviour above though)
79 - Ctrl+AltGr+<ANY> sends the same symbol as AltGr+<ANY> (FIXME: broken on Win)
Pierre Ossmanefd42612014-09-17 13:55:51 +020080 - "Shift press, A press, Shift release, A release" should not send "a release"
81
82- Numpad:
83
Pierre Ossman2ddee232016-06-10 15:03:59 +020084 - NumLock affects symbol lookup [Win, X11]
Pierre Ossmanefd42612014-09-17 13:55:51 +020085 - Numpad specific symbols are sent
Pierre Ossmanefd42612014-09-17 13:55:51 +020086 - Decimal key should send Decimal for layouts with . as a symbol, and
87 Separator for layouts with , as a symbol
Pierre Ossman2ddee232016-06-10 15:03:59 +020088 - Shift inverts NumLock behaviour [X11]
89 - Shift turns NumLock off, but not on [Win] (FIXME: fake Shifts also sent)
Pierre Ossmanefd42612014-09-17 13:55:51 +020090
91- Multimedia keys:
92
Pierre Ossman93454d92016-06-10 15:08:52 +020093 OS X: FIXME: all broken
94
Pierre Ossmanefd42612014-09-17 13:55:51 +020095 - Back, Forward, Refresh, Stop
Pierre Ossman93454d92016-06-10 15:08:52 +020096 - HomePage, Search, Favourites (FIXME: broken on Win)
Pierre Ossmanefd42612014-09-17 13:55:51 +020097 - Mail, Calculator
98 - Volume up, down, mute
99 - Media next, previous, stop, play
Pierre Ossman93454d92016-06-10 15:08:52 +0200100 - Sleep (FIXME: broken on Win)
Pierre Ossmanefd42612014-09-17 13:55:51 +0200101 - FIXME: probably more keys exist
102
103- Non-character keys:
104
Pierre Ossman93454d92016-06-10 15:08:52 +0200105 - F1-F24 (FIXME: F14-F15 broken on OS X)
Pierre Ossmanefb48a52016-06-10 15:08:24 +0200106 - Tab, Space, Backspace, Return, Esc
Pierre Ossman93454d92016-06-10 15:08:52 +0200107 - LeftTab sends Tab [X11?]
Pierre Ossmanefb48a52016-06-10 15:08:24 +0200108 - PrntScrn, ScrollLock, Pause [X11, Win]
109 - Help [X11?, OS X]
110 - Insert [X11, Win]
111 - Delete, Home, End, PageUp, PageDown
Pierre Ossmanefd42612014-09-17 13:55:51 +0200112 - Arrow keys
113 - Menu
Pierre Ossmana7d3dc72014-09-30 17:03:28 +0200114 - Alt+PrntScrn sends Sys_Req [Win]
Pierre Ossmanefd42612014-09-17 13:55:51 +0200115
116- French layout (AZERTY and inverted shift behaviour for many keys)
117
Pierre Ossman54338082017-09-18 16:22:41 +0200118- Local layout changes are respected
119
120Client (raw mode)
121-----------------
122
123- All physical keys (modifiers or type of symbol shouldn't matter)
124
125 - Normal keys
126 - Dead keys
127 - Numpad
128 - Multimedia keys
129 - Non-character keys
130
131- CtrlL+AltR is fake released to compensate for Windows' AltGr magic [Win]
132
133Client (both modes)
134-------------------
135
Pierre Ossmanefd42612014-09-17 13:55:51 +0200136- Key repeat should not send repeated release events
137
138- Keys are released on loss of focus
139
Pierre Ossmanefd42612014-09-17 13:55:51 +0200140- Local input methods are disabled/enabled with focus
141
Pierre Ossman93454d92016-06-10 15:08:52 +0200142- System keys should be grabbed in full screen (FIXME: lots missing on Win)
Pierre Ossmanefd42612014-09-17 13:55:51 +0200143
144 The exact keys depends on the system and configuration, but it
145 is usually variants of these:
146
147 - Alt+Tab
148 - Super (and Super+other)
149 - Multimedia keys
150 - Ctrl+Alt+Delete
151 - Ctrl+Esc
152 - F8-F12
153
Pierre Ossman671d05d2017-09-18 16:22:09 +0200154- Lock key states:
155
156 - Adjusted on server when connecting
157 - Adjusted on server when regaining focus
158 - Server changes are honored when focused
159 - Server changes are not honored when not focused
160
161 - CapsLock
162 - NumLock (hidden state on macOS)
163 - ScollLock [X11, Win]
164
Pierre Ossmanefd42612014-09-17 13:55:51 +0200165- Virtual keyboard (as much of the above as is possible)