2024-01-19 03:17:26 +01:00
|
|
|
const Key = @This();
|
|
|
|
|
|
|
|
pub const Modifiers = packed struct(u8) {
|
|
|
|
shift: bool = false,
|
|
|
|
alt: bool = false,
|
|
|
|
ctrl: bool = false,
|
|
|
|
super: bool = false,
|
|
|
|
hyper: bool = false,
|
|
|
|
meta: bool = false,
|
|
|
|
caps_lock: bool = false,
|
|
|
|
num_lock: bool = false,
|
|
|
|
};
|
|
|
|
|
|
|
|
/// the unicode codepoint of the key event. This can be greater than the maximum
|
|
|
|
/// allowable unicode codepoint for special keys
|
|
|
|
codepoint: u21,
|
|
|
|
|
|
|
|
/// the text generated from the key event, if any
|
|
|
|
text: ?[]const u8 = null,
|
|
|
|
|
|
|
|
/// the shifted codepoint of this key event. This will only be present if the
|
|
|
|
/// Shift modifier was used to generate the event
|
|
|
|
shifted_codepoint: ?u21 = null,
|
|
|
|
|
|
|
|
/// the key that would have been pressed on a standard keyboard layout. This is
|
|
|
|
/// useful for shortcut matching
|
|
|
|
base_layout_codepoint: ?u21 = null,
|
|
|
|
|
|
|
|
mods: Modifiers = .{},
|
|
|
|
|
|
|
|
// a few special keys that we encode as their actual ascii value
|
|
|
|
pub const enter: u21 = 0x0D;
|
|
|
|
pub const tab: u21 = 0x09;
|
|
|
|
pub const escape: u21 = 0x1B;
|
|
|
|
pub const space: u21 = 0x20;
|
|
|
|
pub const backspace: u21 = 0x7F;
|
|
|
|
|
|
|
|
// kitty encodes these keys directly in the private use area. We reuse those
|
|
|
|
// mappings
|
2024-01-21 18:52:10 +01:00
|
|
|
pub const insert: u21 = 57348;
|
|
|
|
pub const delete: u21 = 57349;
|
|
|
|
pub const left: u21 = 57350;
|
|
|
|
pub const right: u21 = 57351;
|
|
|
|
pub const up: u21 = 57352;
|
|
|
|
pub const down: u21 = 57353;
|
|
|
|
pub const page_up: u21 = 57354;
|
|
|
|
pub const page_down: u21 = 57355;
|
|
|
|
pub const home: u21 = 57356;
|
|
|
|
pub const end: u21 = 57357;
|
2024-01-19 03:17:26 +01:00
|
|
|
pub const caps_lock: u21 = 57358;
|
|
|
|
pub const scroll_lock: u21 = 57359;
|
|
|
|
pub const num_lock: u21 = 57360;
|
|
|
|
pub const print_screen: u21 = 57361;
|
|
|
|
pub const pause: u21 = 57362;
|
|
|
|
pub const menu: u21 = 57363;
|
2024-01-21 18:52:10 +01:00
|
|
|
pub const f1: u21 = 57364;
|
|
|
|
pub const f2: u21 = 57365;
|
|
|
|
pub const f3: u21 = 57366;
|
|
|
|
pub const f4: u21 = 57367;
|
|
|
|
pub const f5: u21 = 57368;
|
|
|
|
pub const f6: u21 = 57369;
|
|
|
|
pub const f7: u21 = 57370;
|
|
|
|
pub const f8: u21 = 57371;
|
|
|
|
pub const f9: u21 = 57372;
|
|
|
|
pub const f10: u21 = 57373;
|
|
|
|
pub const f11: u21 = 57374;
|
|
|
|
pub const f12: u21 = 57375;
|
2024-01-19 03:17:26 +01:00
|
|
|
pub const f13: u21 = 57376;
|
|
|
|
pub const f14: u21 = 57377;
|
|
|
|
pub const f15: u21 = 57378;
|
|
|
|
pub const @"f16": u21 = 57379;
|
|
|
|
pub const f17: u21 = 57380;
|
|
|
|
pub const f18: u21 = 57381;
|
|
|
|
pub const f19: u21 = 57382;
|
|
|
|
pub const f20: u21 = 57383;
|
|
|
|
pub const f21: u21 = 57384;
|
|
|
|
pub const f22: u21 = 57385;
|
|
|
|
pub const f23: u21 = 57386;
|
|
|
|
pub const f24: u21 = 57387;
|
|
|
|
pub const f25: u21 = 57388;
|
|
|
|
pub const f26: u21 = 57389;
|
|
|
|
pub const f27: u21 = 57390;
|
|
|
|
pub const f28: u21 = 57391;
|
|
|
|
pub const f29: u21 = 57392;
|
|
|
|
pub const f30: u21 = 57393;
|
|
|
|
pub const f31: u21 = 57394;
|
|
|
|
pub const @"f32": u21 = 57395;
|
|
|
|
pub const f33: u21 = 57396;
|
|
|
|
pub const f34: u21 = 57397;
|
|
|
|
pub const f35: u21 = 57398;
|
|
|
|
pub const kp_0: u21 = 57399;
|
|
|
|
pub const kp_1: u21 = 57400;
|
|
|
|
pub const kp_2: u21 = 57401;
|
|
|
|
pub const kp_3: u21 = 57402;
|
|
|
|
pub const kp_4: u21 = 57403;
|
|
|
|
pub const kp_5: u21 = 57404;
|
|
|
|
pub const kp_6: u21 = 57405;
|
|
|
|
pub const kp_7: u21 = 57406;
|
|
|
|
pub const kp_8: u21 = 57407;
|
|
|
|
pub const kp_9: u21 = 57408;
|
2024-01-20 15:05:22 +01:00
|
|
|
pub const kp_begin: u21 = 57427;
|
2024-01-19 03:17:26 +01:00
|
|
|
// TODO: Finish the kitty keys
|