Skip to content

Commit 8cd79c7

Browse files
committed
Add missing keyboard keys: navigation, arrows, numpad, and common aliases
1 parent 4257620 commit 8cd79c7

5 files changed

Lines changed: 126 additions & 5 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ Connect to `ws://<host>:<port>/ws` (or `wss://` behind a reverse proxy).
853853
| `simulate-button` | `{ "js": 0, "id": 0, "state": 1 }` | Press/release button |
854854
| `simulate-slider` | `{ "js": 0, "id": 0, "value": 128 }` | Set slider value (0 to `max_value`, default 255) |
855855
| `simulate-joystick` | `{ "js": 0, "id": 0, "value": { "x": 127, "y": 127 } }` | Set joystick X/Y (0-255) |
856-
| `simulate-keyboard` | `{ "keyboard_index": 0, "key": "ctrl+a", "state": 1 }` | Press/release key or combo |
856+
| `simulate-keyboard` | `{ "keyboard_index": 0, "key": "ctrl+a", "state": 1 }` | Press/release key or combo. Key names: letters (`a``z`), digits (`0``9`), `f1``f12`, modifiers (`ctrl`/`shift`/`alt`/`meta`/`win`/`super`), navigation (`insert`/`ins`, `delete`/`del`, `home`, `end`, `pageup`/`pgup`, `pagedown`/`pgdn`), arrows (`up`, `down`, `left`, `right`), numpad (`numpad0``numpad9`, `numpadenter`, `numpadplus`, `numpadminus`, `numpadmultiply`, `numpaddivide`), special (`escape`/`esc`, `enter`/`return`, `space`, `tab`, `backspace`, `capslock`, `printscreen`) |
857857
| `push-data` | `{ "key": "...", "value": ..., "unit": "...", "source": "..." }` | Push data to Data Bus for broadcast |
858858
| `execute-command` | `{ "block_id": "...", "command_type": "shell", "command": "...", "http_method": "GET", "http_url": "...", "http_body": "...", "params": {...} }` | Execute command with parameters |
859859
| `start-recording` | `{ "mode": "push-to-talk" }` | Client begins audio recording |

docs/user-manual/de/12-virtual-joysticks.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,14 @@ Nutze diese Namen in der Keyboard Key-Einstellung:
178178
| Buchstaben | `a` bis `z` |
179179
| Zahlen | `0` bis `9` |
180180
| Funktionstasten | `f1` bis `f12` |
181-
| Modifikatoren | `ctrl`, `shift`, `alt`, `meta` |
182-
| Sondertasten | `space`, `enter`, `escape`, `esc`, `tab`, `backspace`, `capslock` |
181+
| Modifikatoren | `ctrl`, `shift`, `alt`, `meta`, `win`, `super` |
182+
| Sondertasten | `space`, `enter`, `return`, `escape`, `esc`, `tab`, `backspace`, `capslock` |
183183
| Satzzeichen | `minus`, `equal`, `comma`, `dot`, `slash`, `semicolon`, `apostrophe`, `grave`, `backslash`, `leftbracket`, `rightbracket` |
184+
| Navigation | `insert` / `ins`, `delete` / `del`, `home`, `end`, `pageup` / `pgup`, `pagedown` / `pgdn` |
185+
| Pfeiltasten | `up`, `down`, `left`, `right` |
186+
| Numpad | `numpad0``numpad9`, `numpaddot`, `numpadenter`, `numpadplus`, `numpadminus`, `numpadmultiply`, `numpaddivide` |
187+
| Medien | `volumeup`, `volumedown`, `mute`, `playpause`, `stop`, `nextsong`, `previoussong` |
188+
| System | `printscreen`, `scrolllock`, `numlock` |
184189

185190
Kombiniere Modifikatoren mit `+`: `ctrl+a`, `ctrl+shift+a`, `alt+f4`, `meta+e`.
186191

docs/user-manual/en/12-virtual-joysticks.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,14 @@ Use these names in the Keyboard Key setting:
178178
| Letters | `a` through `z` |
179179
| Numbers | `0` through `9` |
180180
| Function keys | `f1` through `f12` |
181-
| Modifiers | `ctrl`, `shift`, `alt`, `meta` |
182-
| Special keys | `space`, `enter`, `escape`, `esc`, `tab`, `backspace`, `capslock` |
181+
| Modifiers | `ctrl`, `shift`, `alt`, `meta`, `win`, `super` |
182+
| Special keys | `space`, `enter`, `return`, `escape`, `esc`, `tab`, `backspace`, `capslock` |
183183
| Punctuation | `minus`, `equal`, `comma`, `dot`, `slash`, `semicolon`, `apostrophe`, `grave`, `backslash`, `leftbracket`, `rightbracket` |
184+
| Navigation | `insert` / `ins`, `delete` / `del`, `home`, `end`, `pageup` / `pgup`, `pagedown` / `pgdn` |
185+
| Arrow keys | `up`, `down`, `left`, `right` |
186+
| Numpad | `numpad0``numpad9`, `numpaddot`, `numpadenter`, `numpadplus`, `numpadminus`, `numpadmultiply`, `numpaddivide` |
187+
| Media | `volumeup`, `volumedown`, `mute`, `playpause`, `stop`, `nextsong`, `previoussong` |
188+
| System | `printscreen`, `scrolllock`, `numlock` |
184189

185190
Combine modifiers with `+`: `ctrl+a`, `ctrl+shift+a`, `alt+f4`, `meta+e`.
186191

internal/devices/keyboard_linux.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,38 @@ const (
108108
KEY_BRIGHTNESSUP = 225
109109
KEY_PRINT = 99
110110
KEY_SYSRQ = 183
111+
112+
// Navigation cluster
113+
KEY_INSERT = 110
114+
KEY_DELETE = 111
115+
KEY_HOME = 102
116+
KEY_END = 107
117+
KEY_PAGEUP = 104
118+
KEY_PAGEDOWN = 109
119+
120+
// Arrow keys
121+
KEY_UP = 103
122+
KEY_DOWN = 108
123+
KEY_LEFT = 105
124+
KEY_RIGHT = 106
125+
126+
// Numpad
127+
KEY_KP0 = 82
128+
KEY_KP1 = 79
129+
KEY_KP2 = 80
130+
KEY_KP3 = 81
131+
KEY_KP4 = 75
132+
KEY_KP5 = 76
133+
KEY_KP6 = 77
134+
KEY_KP7 = 71
135+
KEY_KP8 = 72
136+
KEY_KP9 = 73
137+
KEY_KPDOT = 83
138+
KEY_KPENTER = 96
139+
KEY_KPPLUS = 78
140+
KEY_KPMINUS = 74
141+
KEY_KPSLASH = 98
142+
// KEY_KPASTERISK = 55 (already defined above)
111143
)
112144

113145
// KeyNameToCode maps human-readable key names to Linux input codes.
@@ -148,6 +180,26 @@ var KeyNameToCode = map[string]int{
148180
"brightnessup": KEY_BRIGHTNESSUP, "brightnessdown": KEY_BRIGHTNESSDOWN,
149181
"printscreen": KEY_PRINT, "sysrq": KEY_SYSRQ,
150182
"screenshot": KEY_PRINT,
183+
// Navigation cluster
184+
"insert": KEY_INSERT, "ins": KEY_INSERT,
185+
"delete": KEY_DELETE, "del": KEY_DELETE,
186+
"home": KEY_HOME, "end": KEY_END,
187+
"pageup": KEY_PAGEUP, "pgup": KEY_PAGEUP,
188+
"pagedown": KEY_PAGEDOWN, "pgdn": KEY_PAGEDOWN, "pgdown": KEY_PAGEDOWN,
189+
// Arrow keys
190+
"up": KEY_UP, "down": KEY_DOWN, "left": KEY_LEFT, "right": KEY_RIGHT,
191+
// Numpad
192+
"numpad0": KEY_KP0, "numpad1": KEY_KP1, "numpad2": KEY_KP2,
193+
"numpad3": KEY_KP3, "numpad4": KEY_KP4, "numpad5": KEY_KP5,
194+
"numpad6": KEY_KP6, "numpad7": KEY_KP7, "numpad8": KEY_KP8,
195+
"numpad9": KEY_KP9,
196+
"numpaddot": KEY_KPDOT, "numpadenter": KEY_KPENTER,
197+
"numpadplus": KEY_KPPLUS, "numpadminus": KEY_KPMINUS,
198+
"numpadmultiply": KEY_KPASTERISK, "numpaddivide": KEY_KPSLASH,
199+
// Common aliases
200+
"return": KEY_ENTER,
201+
"win": KEY_LEFTMETA, "super": KEY_LEFTMETA,
202+
"windows": KEY_LEFTMETA,
151203
}
152204

153205
// allKeys contains all key codes to register with uinput.
@@ -171,6 +223,14 @@ var allKeys = []uint16{
171223
KEY_PLAYPAUSE, KEY_STOPCD, KEY_PREVIOUSSONG, KEY_NEXTSONG,
172224
KEY_BRIGHTNESSUP, KEY_BRIGHTNESSDOWN,
173225
KEY_PRINT, KEY_SYSRQ,
226+
// Navigation cluster
227+
KEY_INSERT, KEY_DELETE, KEY_HOME, KEY_END, KEY_PAGEUP, KEY_PAGEDOWN,
228+
// Arrow keys
229+
KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT,
230+
// Numpad
231+
KEY_KP0, KEY_KP1, KEY_KP2, KEY_KP3, KEY_KP4, KEY_KP5,
232+
KEY_KP6, KEY_KP7, KEY_KP8, KEY_KP9,
233+
KEY_KPDOT, KEY_KPENTER, KEY_KPPLUS, KEY_KPMINUS, KEY_KPASTERISK, KEY_KPSLASH,
174234
}
175235

176236
// linuxKeyboard represents a virtual keyboard device created via uinput.

internal/devices/keyboard_windows.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,37 @@ const (
100100
VK_LAUNCH_APP1 = 0xB6
101101
VK_LAUNCH_APP2 = 0xB7
102102
VK_LAUNCH_MEDIA_SELECT = 0xB5
103+
104+
// Navigation cluster
105+
VK_INSERT = 0x2D
106+
VK_DELETE = 0x2E
107+
VK_HOME = 0x24
108+
VK_END = 0x23
109+
VK_PRIOR = 0x21 // Page Up
110+
VK_NEXT = 0x22 // Page Down
111+
112+
// Arrow keys
113+
VK_UP = 0x26
114+
VK_DOWN = 0x28
115+
VK_LEFT = 0x25
116+
VK_RIGHT = 0x27
117+
118+
// Numpad
119+
VK_NUMPAD0 = 0x60
120+
VK_NUMPAD1 = 0x61
121+
VK_NUMPAD2 = 0x62
122+
VK_NUMPAD3 = 0x63
123+
VK_NUMPAD4 = 0x64
124+
VK_NUMPAD5 = 0x65
125+
VK_NUMPAD6 = 0x66
126+
VK_NUMPAD7 = 0x67
127+
VK_NUMPAD8 = 0x68
128+
VK_NUMPAD9 = 0x69
129+
VK_DECIMAL = 0x6E
130+
VK_ADD = 0x6B
131+
VK_SUBTRACT = 0x6D
132+
VK_MULTIPLY = 0x6A
133+
VK_DIVIDE = 0x6F
103134
)
104135

105136
// KeyNameToCode maps human-readable key names to Windows virtual key codes.
@@ -136,6 +167,26 @@ var KeyNameToCode = map[string]int{
136167
"printscreen": VK_SNAPSHOT, "screenshot": VK_SNAPSHOT,
137168
"launchapp1": VK_LAUNCH_APP1, "launchapp2": VK_LAUNCH_APP2,
138169
"launchmedia": VK_LAUNCH_MEDIA_SELECT,
170+
// Navigation cluster
171+
"insert": VK_INSERT, "ins": VK_INSERT,
172+
"delete": VK_DELETE, "del": VK_DELETE,
173+
"home": VK_HOME, "end": VK_END,
174+
"pageup": VK_PRIOR, "pgup": VK_PRIOR,
175+
"pagedown": VK_NEXT, "pgdn": VK_NEXT, "pgdown": VK_NEXT,
176+
// Arrow keys
177+
"up": VK_UP, "down": VK_DOWN, "left": VK_LEFT, "right": VK_RIGHT,
178+
// Numpad
179+
"numpad0": VK_NUMPAD0, "numpad1": VK_NUMPAD1, "numpad2": VK_NUMPAD2,
180+
"numpad3": VK_NUMPAD3, "numpad4": VK_NUMPAD4, "numpad5": VK_NUMPAD5,
181+
"numpad6": VK_NUMPAD6, "numpad7": VK_NUMPAD7, "numpad8": VK_NUMPAD8,
182+
"numpad9": VK_NUMPAD9,
183+
"numpaddot": VK_DECIMAL, "numpadenter": VK_RETURN,
184+
"numpadplus": VK_ADD, "numpadminus": VK_SUBTRACT,
185+
"numpadmultiply": VK_MULTIPLY, "numpaddivide": VK_DIVIDE,
186+
// Common aliases
187+
"return": VK_RETURN,
188+
"win": VK_LWIN, "super": VK_LWIN,
189+
"windows": VK_LWIN,
139190
}
140191

141192
// windowsKeyboard represents a virtual keyboard using Windows SendInput API.

0 commit comments

Comments
 (0)