Improve key handling on x11, sharing wayland implementation (#8094)
Makes keyboard shortcuts work on x11. Release Notes: - N/A
This commit is contained in:
parent
c97ecc7326
commit
cd640a87a9
5 changed files with 53 additions and 45 deletions
|
@ -118,39 +118,31 @@ impl Client for X11Client {
|
|||
xcb::Event::X(x::Event::KeyPress(ev)) => {
|
||||
let window = self.get_window(ev.event());
|
||||
let modifiers = super::modifiers_from_state(ev.state());
|
||||
let key = {
|
||||
let keystroke = {
|
||||
let code = ev.detail().into();
|
||||
let mut state = self.state.lock();
|
||||
let key = state.xkb.key_get_utf8(code);
|
||||
let keystroke = crate::Keystroke::from_xkb(&state.xkb, modifiers, code);
|
||||
state.xkb.update_key(code, xkb::KeyDirection::Down);
|
||||
key
|
||||
keystroke
|
||||
};
|
||||
|
||||
window.handle_input(PlatformInput::KeyDown(crate::KeyDownEvent {
|
||||
keystroke: crate::Keystroke {
|
||||
modifiers,
|
||||
key,
|
||||
ime_key: None,
|
||||
},
|
||||
keystroke,
|
||||
is_held: false,
|
||||
}));
|
||||
}
|
||||
xcb::Event::X(x::Event::KeyRelease(ev)) => {
|
||||
let window = self.get_window(ev.event());
|
||||
let modifiers = super::modifiers_from_state(ev.state());
|
||||
let key = {
|
||||
let keystroke = {
|
||||
let code = ev.detail().into();
|
||||
let mut state = self.state.lock();
|
||||
let key = state.xkb.key_get_utf8(code);
|
||||
let keystroke = crate::Keystroke::from_xkb(&state.xkb, modifiers, code);
|
||||
state.xkb.update_key(code, xkb::KeyDirection::Up);
|
||||
key
|
||||
keystroke
|
||||
};
|
||||
window.handle_input(PlatformInput::KeyUp(crate::KeyUpEvent {
|
||||
keystroke: crate::Keystroke {
|
||||
modifiers,
|
||||
key,
|
||||
ime_key: None,
|
||||
},
|
||||
}));
|
||||
|
||||
window.handle_input(PlatformInput::KeyUp(crate::KeyUpEvent { keystroke }));
|
||||
}
|
||||
xcb::Event::X(x::Event::ButtonPress(ev)) => {
|
||||
let window = self.get_window(ev.event());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue