[go: up one dir, main page]

gdk4/
keymap_key.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use std::fmt;
4
5use crate::ffi;
6use glib::translate::*;
7
8glib::wrapper! {
9    #[doc(alias = "GdkKeymapKey")]
10    pub struct KeymapKey(BoxedInline<ffi::GdkKeymapKey>);
11}
12
13impl KeymapKey {
14    #[inline]
15    pub fn new(keycode: u32, group: i32, level: i32) -> Self {
16        assert_initialized_main_thread!();
17        unsafe {
18            Self::unsafe_from(ffi::GdkKeymapKey {
19                group,
20                keycode,
21                level,
22            })
23        }
24    }
25
26    #[inline]
27    pub fn keycode(&self) -> u32 {
28        self.inner.keycode
29    }
30
31    #[inline]
32    pub fn group(&self) -> i32 {
33        self.inner.group
34    }
35
36    #[inline]
37    pub fn level(&self) -> i32 {
38        self.inner.level
39    }
40}
41
42impl fmt::Debug for KeymapKey {
43    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
44        f.debug_struct("KeymapKey")
45            .field("keycode", &self.keycode())
46            .field("group", &self.group())
47            .field("level", &self.level())
48            .finish()
49    }
50}