Fixed input handling on Xorg

This commit is contained in:
Lorenzo Torres 2025-08-10 20:08:32 +02:00
parent b6d50a781d
commit 1c2f118aa8

View file

@ -34,6 +34,13 @@ fn mapError(result: c_int) !void {
}; };
} }
fn mapKeysym(keysym: u32) u32 {
return switch (keysym) {
0xffe1 => 340,
else => keysym,
};
}
fn vulkan_init_instance(allocator: std.mem.Allocator, handle: *c.VkInstance) !void { fn vulkan_init_instance(allocator: std.mem.Allocator, handle: *c.VkInstance) !void {
const extensions = [_][*c]const u8{ c.VK_KHR_XCB_SURFACE_EXTENSION_NAME, c.VK_KHR_SURFACE_EXTENSION_NAME }; const extensions = [_][*c]const u8{ c.VK_KHR_XCB_SURFACE_EXTENSION_NAME, c.VK_KHR_SURFACE_EXTENSION_NAME };
@ -176,12 +183,12 @@ pub fn main() !void {
c.XCB_KEY_PRESS => { c.XCB_KEY_PRESS => {
const ev: *c.xcb_key_press_event_t = @ptrCast(e); const ev: *c.xcb_key_press_event_t = @ptrCast(e);
const key = c.xcb_key_symbols_get_keysym(keysyms, ev.detail, 0); const key = c.xcb_key_symbols_get_keysym(keysyms, ev.detail, 0);
sideros.sideros_key_callback(key, false); sideros.sideros_key_callback(mapKeysym(key), false);
}, },
c.XCB_KEY_RELEASE => { c.XCB_KEY_RELEASE => {
const ev: *c.xcb_key_release_event_t = @ptrCast(e); const ev: *c.xcb_key_release_event_t = @ptrCast(e);
const key = c.xcb_key_symbols_get_keysym(keysyms, ev.detail, 0); const key = c.xcb_key_symbols_get_keysym(keysyms, ev.detail, 0);
sideros.sideros_key_callback(key, false); sideros.sideros_key_callback(mapKeysym(key), true);
}, },
else => {}, else => {},
} }