Struct pc_keyboard::ScancodeSet2
source · pub struct ScancodeSet2 { /* private fields */ }
Expand description
Contains the implementation of Scancode Set 2.
See the OS dev wiki: https://wiki.osdev.org/PS/2_Keyboard#Scan_Code_Set_2 Additional reference: https://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html
Implementations§
source§impl ScancodeSet2
impl ScancodeSet2
sourcepub const fn new() -> ScancodeSet2
pub const fn new() -> ScancodeSet2
Construct a new ScancodeSet2
decoder.
Examples found in repository?
examples/scancodes.rs (line 30)
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
fn main() {
let mut s = ScancodeSet1::new();
// [ 0x01 ] means "Pressed Escape" in Set 1
match s.advance_state(0x01) {
Ok(Some(KeyEvent { code, state })) => {
println!("Scancode Set 1 0x01 is KeyCode '{code:?}' KeyState '{state:?}'");
}
Ok(None) => {
println!("This is wrong, we didn't think that was a complete sequence");
}
Err(e) => {
println!("There was an error: {e:?}");
}
}
// [ 0x81 ] means "Released Escape" in Set 1
match s.advance_state(0x81) {
Ok(Some(KeyEvent { code, state })) => {
println!("Scancode Set 1 0x81 is KeyCode '{code:?}' KeyState '{state:?}'");
}
Ok(None) => {
println!("This is wrong, we didn't think that was a complete sequence");
}
Err(e) => {
println!("There was an error: {e:?}");
}
}
let mut s = ScancodeSet2::new();
// [ 0x01 ] means "Pressed F9" in Set 2
match s.advance_state(0x01) {
Ok(Some(KeyEvent { code, state })) => {
println!("Scancode Set 2 0x01 is KeyCode '{code:?}' KeyState '{state:?}'");
}
Ok(None) => {
println!("This is wrong, we didn't think that was a complete sequence");
}
Err(e) => {
println!("There was an error: {e:?}");
}
}
// [ 0xF0, 0x01 ] means "Released F9" in Set 2
assert_eq!(Ok(None), s.advance_state(0xF0));
match s.advance_state(0x01) {
Ok(Some(KeyEvent { code, state })) => {
println!("Scancode Set 2 0xF0 0x01 is KeyCode '{code:?}' KeyState '{state:?}'");
}
Ok(None) => {
println!("This is wrong, we didn't think that was a complete sequence");
}
Err(e) => {
println!("There was an error: {e:?}");
}
}
}
Trait Implementations§
source§impl Default for ScancodeSet2
impl Default for ScancodeSet2
source§impl ScancodeSet for ScancodeSet2
impl ScancodeSet for ScancodeSet2
source§fn advance_state(&mut self, code: u8) -> Result<Option<KeyEvent>, Error>
fn advance_state(&mut self, code: u8) -> Result<Option<KeyEvent>, Error>
Implements state logic for scancode set 2
§Start:
- F0 => Goto Release
- E0 => Goto Extended
- E1 => Goto Extended2
- xx => Key Down Event
§Release:
- xxx => Key Up Event
§Extended:
- F0 => Goto Release-Extended
- xx => Extended Key Down Event
§Release-Extended:
- xxx => Extended Key Up Event
§Extended2:
- F0 => Goto Release-Extended2
- xx => Extended2 Key Down Event
§Release-Extended2:
- xxx => Extended2 Key Up Event
Auto Trait Implementations§
impl Freeze for ScancodeSet2
impl RefUnwindSafe for ScancodeSet2
impl Send for ScancodeSet2
impl Sync for ScancodeSet2
impl Unpin for ScancodeSet2
impl UnwindSafe for ScancodeSet2
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more