Skip to content

Commit 0676c39

Browse files
committed
Don't listen to XkbMapNotify
This event appears to be subsumed by XkbNewKeyboardNotify when we start listening to XkbNewKeyboardNotify, although the documentation feels a little unclear on the matter.
1 parent ba8023a commit 0676c39

File tree

2 files changed

+15
-24
lines changed

2 files changed

+15
-24
lines changed

src/platform_impl/linux/x11/event_processor.rs

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,30 +1178,21 @@ impl<T: 'static> EventProcessor<T> {
11781178
_ => {
11791179
if event_type == self.xkbext.first_event_id {
11801180
let xev = unsafe { &*(xev as *const _ as *const ffi::XkbAnyEvent) };
1181-
match xev.xkb_type {
1182-
ffi::XkbNewKeyboardNotify => {
1183-
let xev = unsafe {
1184-
&*(xev as *const _ as *const ffi::XkbNewKeyboardNotifyEvent)
1185-
};
1186-
let keycodes_changed_flag = 0x1;
1187-
let geometry_changed_flag = 0x1 << 1;
1188-
1189-
// TODO: What do we do about the "geometry changed" case?
1190-
let keycodes_changed =
1191-
util::has_flag(xev.changed, keycodes_changed_flag);
1192-
let geometry_changed =
1193-
util::has_flag(xev.changed, geometry_changed_flag);
1194-
1195-
if xev.device == self.kb_state.core_keyboard_id
1196-
&& (keycodes_changed || geometry_changed)
1197-
{
1198-
unsafe { self.kb_state.init_with_x11_keymap() };
1199-
}
1200-
}
1201-
ffi::XkbMapNotify => {
1202-
todo!("Handle this");
1181+
if let ffi::XkbNewKeyboardNotify = xev.xkb_type {
1182+
let xev =
1183+
unsafe { &*(xev as *const _ as *const ffi::XkbNewKeyboardNotifyEvent) };
1184+
let keycodes_changed_flag = 0x1;
1185+
let geometry_changed_flag = 0x1 << 1;
1186+
1187+
// TODO: What do we do about the "geometry changed" case?
1188+
let keycodes_changed = util::has_flag(xev.changed, keycodes_changed_flag);
1189+
let geometry_changed = util::has_flag(xev.changed, geometry_changed_flag);
1190+
1191+
if xev.device == self.kb_state.core_keyboard_id
1192+
&& (keycodes_changed || geometry_changed)
1193+
{
1194+
unsafe { self.kb_state.init_with_x11_keymap() };
12031195
}
1204-
_ => {}
12051196
}
12061197
}
12071198
if event_type == self.randr_event_offset {

src/platform_impl/linux/x11/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ impl<T: 'static> EventLoop<T> {
311311
.xconn
312312
.select_xkb_events(
313313
0x100, // Use the "core keyboard device"
314-
ffi::XkbNewKeyboardNotifyMask | ffi::XkbMapNotifyMask,
314+
ffi::XkbNewKeyboardNotifyMask,
315315
)
316316
.unwrap()
317317
.queue();

0 commit comments

Comments
 (0)