layout/
layout.rs

1use pc_keyboard::{
2    layouts::{AnyLayout, Uk105Key},
3    DecodedKey, EventDecoder, KeyCode, KeyEvent, KeyState,
4};
5
6fn main() {
7    let mut decoder = EventDecoder::new(
8        AnyLayout::Uk105Key(Uk105Key),
9        pc_keyboard::HandleControl::Ignore,
10    );
11
12    // User presses 'A' on their UK keyboard, gets a lower-case 'a'.
13    let decoded_key = decoder.process_keyevent(KeyEvent {
14        code: KeyCode::A,
15        state: KeyState::Down,
16    });
17    assert_eq!(Some(DecodedKey::Unicode('a')), decoded_key);
18    println!("Got {:?}", decoded_key);
19
20    // User releases 'A' on their UK keyboard
21    let decoded_key = decoder.process_keyevent(KeyEvent {
22        code: KeyCode::A,
23        state: KeyState::Up,
24    });
25    assert_eq!(None, decoded_key);
26
27    // User presses 'Shift' on their UK keyboard
28    let decoded_key = decoder.process_keyevent(KeyEvent {
29        code: KeyCode::LShift,
30        state: KeyState::Down,
31    });
32    assert_eq!(None, decoded_key);
33
34    // User presses 'A' on their UK keyboard, now gets a Capital A
35    let decoded_key = decoder.process_keyevent(KeyEvent {
36        code: KeyCode::A,
37        state: KeyState::Down,
38    });
39    assert_eq!(Some(DecodedKey::Unicode('A')), decoded_key);
40    println!("Got {:?}", decoded_key);
41
42    // User releases 'A' on their UK keyboard
43    let decoded_key = decoder.process_keyevent(KeyEvent {
44        code: KeyCode::A,
45        state: KeyState::Up,
46    });
47    assert_eq!(None, decoded_key);
48
49    // User releases 'Shift' on their UK keyboard
50    let decoded_key = decoder.process_keyevent(KeyEvent {
51        code: KeyCode::LShift,
52        state: KeyState::Up,
53    });
54    assert_eq!(None, decoded_key);
55}