Skip to content

Commit a33dfa5

Browse files
snomiaoclaude
andcommitted
fix: sync Linux adapter with new KeyCode variants (digits, punctuation)
- Add D0-D9, Escape, BracketLeft/Right, Backslash, Period to key_map.rs - Fix VirtualDevice Debug trait bound in output.rs (OnceLock::set) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 917659c commit a33dfa5

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

rs/adapters/linux/src/key_map.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,19 @@ pub fn evdev_key_to_keycode(key: Key) -> KeyCode {
5050
47 => KeyCode::V, 17 => KeyCode::W, 45 => KeyCode::X,
5151
21 => KeyCode::Y, 44 => KeyCode::Z,
5252

53+
// ── Digits (0–9) ─────────────────────────────────────────────────────
54+
11 => KeyCode::D0, 2 => KeyCode::D1, 3 => KeyCode::D2,
55+
4 => KeyCode::D3, 5 => KeyCode::D4, 6 => KeyCode::D5,
56+
7 => KeyCode::D6, 8 => KeyCode::D7, 9 => KeyCode::D8,
57+
10 => KeyCode::D9,
58+
59+
// ── Punctuation / OEM ────────────────────────────────────────────────
60+
1 => KeyCode::Escape,
61+
26 => KeyCode::BracketLeft,
62+
27 => KeyCode::BracketRight,
63+
43 => KeyCode::Backslash,
64+
52 => KeyCode::Period,
65+
5366
// ── Function keys ─────────────────────────────────────────────────────
5467
59 => KeyCode::F1, 60 => KeyCode::F2, 61 => KeyCode::F3,
5568
62 => KeyCode::F4, 63 => KeyCode::F5, 64 => KeyCode::F6,
@@ -115,6 +128,19 @@ pub fn keycode_to_evdev_key(key: KeyCode) -> Option<Key> {
115128
KeyCode::V => 47, KeyCode::W => 17, KeyCode::X => 45,
116129
KeyCode::Y => 21, KeyCode::Z => 44,
117130

131+
// ── Digits (0–9) ─────────────────────────────────────────────────────
132+
KeyCode::D0 => 11, KeyCode::D1 => 2, KeyCode::D2 => 3,
133+
KeyCode::D3 => 4, KeyCode::D4 => 5, KeyCode::D5 => 6,
134+
KeyCode::D6 => 7, KeyCode::D7 => 8, KeyCode::D8 => 9,
135+
KeyCode::D9 => 10,
136+
137+
// ── Punctuation / OEM ────────────────────────────────────────────────
138+
KeyCode::Escape => 1,
139+
KeyCode::BracketLeft => 26,
140+
KeyCode::BracketRight => 27,
141+
KeyCode::Backslash => 43,
142+
KeyCode::Period => 52,
143+
118144
// ── Function keys ─────────────────────────────────────────────────────
119145
KeyCode::F1 => 59, KeyCode::F2 => 60, KeyCode::F3 => 61,
120146
KeyCode::F4 => 62, KeyCode::F5 => 63, KeyCode::F6 => 64,

rs/adapters/linux/src/output.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,9 @@ pub fn init() {
9999
.build()
100100
.expect("failed to build VirtualDevice");
101101

102-
VDEV.set(Mutex::new(vdev))
103-
.expect("output::init() called more than once");
102+
if VDEV.set(Mutex::new(vdev)).is_err() {
103+
panic!("output::init() called more than once");
104+
}
104105

105106
eprintln!("[CLX] uinput virtual device ready");
106107
}

0 commit comments

Comments
 (0)