Skip to content
This repository was archived by the owner on Apr 17, 2026. It is now read-only.

Commit d2512c2

Browse files
author
Billy Messenger
authored
Merge pull request #11 from helgoboss/bug/10-keyboard-layout
Respect keyboard layout
2 parents 46e21cc + 0d55734 commit d2512c2

1 file changed

Lines changed: 64 additions & 59 deletions

File tree

src/window.rs

Lines changed: 64 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ where
456456
_ => (),
457457
}
458458

459-
if let Some(key) = translate_virtual_key_code(event.code) {
459+
if let Some(key) = translate_virtual_key(&event.key) {
460460
self.egui_input.events.push(egui::Event::Key {
461461
key,
462462
pressed,
@@ -487,7 +487,6 @@ where
487487
self.egui_input
488488
.events
489489
.push(egui::Event::Text(written.clone()));
490-
self.egui_ctx.wants_keyboard_input();
491490
}
492491
}
493492
}
@@ -535,66 +534,72 @@ pub fn translate_mouse_button(button: baseview::MouseButton) -> Option<egui::Poi
535534
}
536535
}
537536

538-
pub fn translate_virtual_key_code(key: keyboard_types::Code) -> Option<egui::Key> {
537+
pub fn translate_virtual_key(key: &keyboard_types::Key) -> Option<egui::Key> {
538+
use keyboard_types::Key as K;
539539
use egui::Key;
540-
use keyboard_types::Code;
541540

542541
Some(match key {
543-
Code::ArrowDown => Key::ArrowDown,
544-
Code::ArrowLeft => Key::ArrowLeft,
545-
Code::ArrowRight => Key::ArrowRight,
546-
Code::ArrowUp => Key::ArrowUp,
547-
548-
Code::Escape => Key::Escape,
549-
Code::Tab => Key::Tab,
550-
Code::Backspace => Key::Backspace,
551-
Code::Enter => Key::Enter,
552-
Code::Space => Key::Space,
553-
554-
Code::Insert => Key::Insert,
555-
Code::Delete => Key::Delete,
556-
Code::Home => Key::Home,
557-
Code::End => Key::End,
558-
Code::PageUp => Key::PageUp,
559-
Code::PageDown => Key::PageDown,
560-
561-
Code::Digit0 | Code::Numpad0 => Key::Num0,
562-
Code::Digit1 | Code::Numpad1 => Key::Num1,
563-
Code::Digit2 | Code::Numpad2 => Key::Num2,
564-
Code::Digit3 | Code::Numpad3 => Key::Num3,
565-
Code::Digit4 | Code::Numpad4 => Key::Num4,
566-
Code::Digit5 | Code::Numpad5 => Key::Num5,
567-
Code::Digit6 | Code::Numpad6 => Key::Num6,
568-
Code::Digit7 | Code::Numpad7 => Key::Num7,
569-
Code::Digit8 | Code::Numpad8 => Key::Num8,
570-
Code::Digit9 | Code::Numpad9 => Key::Num9,
571-
572-
Code::KeyA => Key::A,
573-
Code::KeyB => Key::B,
574-
Code::KeyC => Key::C,
575-
Code::KeyD => Key::D,
576-
Code::KeyE => Key::E,
577-
Code::KeyF => Key::F,
578-
Code::KeyG => Key::G,
579-
Code::KeyH => Key::H,
580-
Code::KeyI => Key::I,
581-
Code::KeyJ => Key::J,
582-
Code::KeyK => Key::K,
583-
Code::KeyL => Key::L,
584-
Code::KeyM => Key::M,
585-
Code::KeyN => Key::N,
586-
Code::KeyO => Key::O,
587-
Code::KeyP => Key::P,
588-
Code::KeyQ => Key::Q,
589-
Code::KeyR => Key::R,
590-
Code::KeyS => Key::S,
591-
Code::KeyT => Key::T,
592-
Code::KeyU => Key::U,
593-
Code::KeyV => Key::V,
594-
Code::KeyW => Key::W,
595-
Code::KeyX => Key::X,
596-
Code::KeyY => Key::Y,
597-
Code::KeyZ => Key::Z,
542+
K::ArrowDown => Key::ArrowDown,
543+
K::ArrowLeft => Key::ArrowLeft,
544+
K::ArrowRight => Key::ArrowRight,
545+
K::ArrowUp => Key::ArrowUp,
546+
547+
K::Escape => Key::Escape,
548+
K::Tab => Key::Tab,
549+
K::Backspace => Key::Backspace,
550+
K::Enter => Key::Enter,
551+
552+
K::Insert => Key::Insert,
553+
K::Delete => Key::Delete,
554+
K::Home => Key::Home,
555+
K::End => Key::End,
556+
K::PageUp => Key::PageUp,
557+
K::PageDown => Key::PageDown,
558+
559+
K::Character(s) => {
560+
match s.chars().next()? {
561+
' ' => Key::Space,
562+
'0' => Key::Num0,
563+
'1' => Key::Num1,
564+
'2' => Key::Num2,
565+
'3' => Key::Num3,
566+
'4' => Key::Num4,
567+
'5' => Key::Num5,
568+
'6' => Key::Num6,
569+
'7' => Key::Num7,
570+
'8' => Key::Num8,
571+
'9' => Key::Num9,
572+
'a' => Key::A,
573+
'b' => Key::B,
574+
'c' => Key::C,
575+
'd' => Key::D,
576+
'e' => Key::E,
577+
'f' => Key::F,
578+
'g' => Key::G,
579+
'h' => Key::H,
580+
'i' => Key::I,
581+
'j' => Key::J,
582+
'k' => Key::K,
583+
'l' => Key::L,
584+
'm' => Key::M,
585+
'n' => Key::N,
586+
'o' => Key::O,
587+
'p' => Key::P,
588+
'q' => Key::Q,
589+
'r' => Key::R,
590+
's' => Key::S,
591+
't' => Key::T,
592+
'u' => Key::U,
593+
'v' => Key::V,
594+
'w' => Key::W,
595+
'x' => Key::X,
596+
'y' => Key::Y,
597+
'z' => Key::Z,
598+
_ => {
599+
return None;
600+
}
601+
}
602+
}
598603
_ => {
599604
return None;
600605
}

0 commit comments

Comments
 (0)