strat9_kernel/arch/x86_64/
keyboard_layout.rs1use core::sync::atomic::{AtomicBool, Ordering};
6
7static USE_FRENCH_LAYOUT: AtomicBool = AtomicBool::new(true);
10
11pub fn set_french_layout() {
13 USE_FRENCH_LAYOUT.store(true, Ordering::SeqCst);
14}
15
16pub fn set_us_layout() {
18 USE_FRENCH_LAYOUT.store(false, Ordering::SeqCst);
19}
20
21pub fn is_french_layout() -> bool {
23 USE_FRENCH_LAYOUT.load(Ordering::SeqCst)
24}
25
26pub fn handle_scancode() -> Option<u8> {
28 if is_french_layout() {
29 crate::arch::x86_64::keyboard::handle_scancode()
30 } else {
31 crate::arch::x86_64::keyboard_us::handle_scancode()
32 }
33}
34
35pub fn handle_scancode_raw(scancode: u8) -> Option<u8> {
37 if is_french_layout() {
38 crate::arch::x86_64::keyboard::handle_scancode_raw(scancode)
39 } else {
40 crate::arch::x86_64::keyboard_us::handle_scancode_raw(scancode)
41 }
42}