wayland: keyboard: track input method done events
This commit is contained in:
parent
551381f0b6
commit
d3a17813c0
4 changed files with 36 additions and 1 deletions
|
|
@ -184,6 +184,18 @@ impl<D: Display, K: Keyboard> Button<D, K> {
|
||||||
&self.layout
|
&self.layout
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn keyboard(&self) -> &K
|
||||||
|
{
|
||||||
|
&self.kbd
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn keyboard_mut(&mut self) -> &mut K
|
||||||
|
{
|
||||||
|
&mut self.kbd
|
||||||
|
}
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn mod_state(&self) -> &[ModState; MODIFIERS_MAX]
|
pub fn mod_state(&self) -> &[ModState; MODIFIERS_MAX]
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -450,7 +450,9 @@ impl Dispatch<zwp_input_method_v2::ZwpInputMethodV2, ()> for Dispatcher {
|
||||||
zwp_input_method_v2::Event::TextChangeCause { .. } => (),
|
zwp_input_method_v2::Event::TextChangeCause { .. } => (),
|
||||||
zwp_input_method_v2::Event::ContentType { .. } => (),
|
zwp_input_method_v2::Event::ContentType { .. } => (),
|
||||||
zwp_input_method_v2::Event::SurroundingText { .. } => (),
|
zwp_input_method_v2::Event::SurroundingText { .. } => (),
|
||||||
zwp_input_method_v2::Event::Done => (),
|
zwp_input_method_v2::Event::Done => {
|
||||||
|
ctx.seat.keyboard_mut().done();
|
||||||
|
},
|
||||||
_ => eprintln!("warn: unknown zwp_input_method_v2 event emitted"),
|
_ => eprintln!("warn: unknown zwp_input_method_v2 event emitted"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ pub struct VirtualKeyboard {
|
||||||
keymap: File,
|
keymap: File,
|
||||||
keymap_id: u8,
|
keymap_id: u8,
|
||||||
|
|
||||||
|
im_serial: u32,
|
||||||
|
|
||||||
keycodes: HashMap<Keysym, u8>,
|
keycodes: HashMap<Keysym, u8>,
|
||||||
pressed: [Keysym; 248],
|
pressed: [Keysym; 248],
|
||||||
mod_state: u32,
|
mod_state: u32,
|
||||||
|
|
@ -48,6 +50,8 @@ impl VirtualKeyboard {
|
||||||
keymap,
|
keymap,
|
||||||
keymap_id: 1,
|
keymap_id: 1,
|
||||||
|
|
||||||
|
im_serial: 0,
|
||||||
|
|
||||||
keycodes: HashMap::with_capacity(248),
|
keycodes: HashMap::with_capacity(248),
|
||||||
pressed: [Keysym::NoSymbol; 248],
|
pressed: [Keysym::NoSymbol; 248],
|
||||||
mod_state: 0,
|
mod_state: 0,
|
||||||
|
|
@ -77,6 +81,11 @@ impl VirtualKeyboard {
|
||||||
keycode).unwrap();
|
keycode).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn done(&mut self)
|
||||||
|
{
|
||||||
|
self.im_serial += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Keyboard for VirtualKeyboard {
|
impl Keyboard for VirtualKeyboard {
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,18 @@ impl<D: Display, K: Keyboard,
|
||||||
self.button.layout()
|
self.button.layout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn keyboard(&self) -> &K
|
||||||
|
{
|
||||||
|
self.button.keyboard()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn keyboard_mut(&mut self) -> &mut K
|
||||||
|
{
|
||||||
|
self.button.keyboard_mut()
|
||||||
|
}
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn mod_state(&self) -> &[ModState]
|
pub fn mod_state(&self) -> &[ModState]
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue