rich_sdl2_rust/event/keyboard/
key_mod.rs1use bitflags::bitflags;
4
5use crate::bind;
6
7bitflags! {
8 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
10 pub struct KeyMod : u16 {
11 const NONE = bind::KMOD_NONE as u16;
13 const LSHIFT = bind::KMOD_LSHIFT as u16;
15 const RSHIFT = bind::KMOD_RSHIFT as u16;
17 const LCTRL = bind::KMOD_LCTRL as u16;
19 const RCTRL = bind::KMOD_RCTRL as u16;
21 const LALT = bind::KMOD_LALT as u16;
23 const RALT = bind::KMOD_RALT as u16;
25 const LGUI = bind::KMOD_LGUI as u16;
27 const RGUI = bind::KMOD_RGUI as u16;
29 const NUM = bind::KMOD_NUM as u16;
31 const CAPS = bind::KMOD_CAPS as u16;
33 const MODE = bind::KMOD_MODE as u16;
35 const CTRL = bind::KMOD_CTRL as u16;
37 const SHIFT = bind::KMOD_SHIFT as u16;
39 const ALT = bind::KMOD_ALT as u16;
41 const GUI = bind::KMOD_GUI as u16;
43 }
44}
45
46impl KeyMod {
47 #[must_use]
49 pub fn current() -> Self {
50 Self::from_bits(unsafe { bind::SDL_GetModState() } as u16).unwrap()
51 }
52}