A simple driver for handling PC keyboards, with both Scancode Set 1 (when running on a PC) and Scancode Set 2 support (when reading a PS/2 keyboard output directly).
- Scancode Set 1 and 2
- Dvorak 104-key layout
- US 104-key layout
- UK 105-key layout
- JIS 109-key layout
- Azerty full layout
extern crate pc_keyboard;
use pc_keyboard::{Keyboard, layouts, ScancodeSet2, HandleControl};
fn main() {
let mut kb: Keyboard<layouts::Us104Key, ScancodeSet2> = Keyboard::new(HandleControl::MapLettersToUnicode);
match kb.add_byte(0x20) {
Ok(Some(event)) => {
println!("Event {:?}", event);
}
Ok(None) => {
println!("Need more data");
}
Err(e) => {
println!("Error decoding: {:?}", e);
}
}
}
This crate is guaranteed to compile on stable Rust 1.61 and up. It might compile with older versions but that may change in any new patch release.
There is a changelog in CHANGELOG.md.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.
Contribution to this crate is organized under the terms of the Rust Code of Conduct, the maintainer of this crate, the Rust Embedded Community, promises to intervene to uphold that code of conduct.