fix(gui): map keys to vaxis Key constants

This commit is contained in:
CJ van den Berg 2026-03-30 20:54:34 +02:00
parent c353c92bc3
commit 875c42ad9e
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -3,6 +3,7 @@
const std = @import("std"); const std = @import("std");
const wio = @import("wio"); const wio = @import("wio");
const vaxis = @import("vaxis");
// Modifiers bitmask (matches vaxis.Key.Modifiers packed struct layout used // Modifiers bitmask (matches vaxis.Key.Modifiers packed struct layout used
// by the rest of Flow's input handling). // by the rest of Flow's input handling).
@ -95,11 +96,11 @@ pub fn codepointFromButton(b: wio.Button, mods: Mods) u21 {
.@"7" => if (mods.shiftOnly()) '&' else '7', .@"7" => if (mods.shiftOnly()) '&' else '7',
.@"8" => if (mods.shiftOnly()) '*' else '8', .@"8" => if (mods.shiftOnly()) '*' else '8',
.@"9" => if (mods.shiftOnly()) '(' else '9', .@"9" => if (mods.shiftOnly()) '(' else '9',
.space => ' ', .space => vaxis.Key.space,
.enter => '\r', .enter => vaxis.Key.enter,
.tab => '\t', .tab => vaxis.Key.tab,
.backspace => 0x7f, .backspace => vaxis.Key.backspace,
.escape => 0x1b, .escape => vaxis.Key.escape,
.minus => if (mods.shiftOnly()) '_' else '-', .minus => if (mods.shiftOnly()) '_' else '-',
.equals => if (mods.shiftOnly()) '+' else '=', .equals => if (mods.shiftOnly()) '+' else '=',
.left_bracket => if (mods.shiftOnly()) '{' else '[', .left_bracket => if (mods.shiftOnly()) '{' else '[',
@ -111,47 +112,47 @@ pub fn codepointFromButton(b: wio.Button, mods: Mods) u21 {
.comma => if (mods.shiftOnly()) '<' else ',', .comma => if (mods.shiftOnly()) '<' else ',',
.dot => if (mods.shiftOnly()) '>' else '.', .dot => if (mods.shiftOnly()) '>' else '.',
.slash => if (mods.shiftOnly()) '?' else '/', .slash => if (mods.shiftOnly()) '?' else '/',
// Navigation keys map to special Unicode private-use codepoints // Navigation and function keys: kitty protocol codepoints (vaxis.Key).
// that Flow's input layer understands (matching kitty protocol). .up => vaxis.Key.up,
.up => 0xF700, .down => vaxis.Key.down,
.down => 0xF701, .left => vaxis.Key.left,
.left => 0xF702, .right => vaxis.Key.right,
.right => 0xF703, .home => vaxis.Key.home,
.home => 0xF704, .end => vaxis.Key.end,
.end => 0xF705, .page_up => vaxis.Key.page_up,
.page_up => 0xF706, .page_down => vaxis.Key.page_down,
.page_down => 0xF707, .insert => vaxis.Key.insert,
.insert => 0xF708, .delete => vaxis.Key.delete,
.delete => 0xF709, .f1 => vaxis.Key.f1,
.f1 => 0xF710, .f2 => vaxis.Key.f2,
.f2 => 0xF711, .f3 => vaxis.Key.f3,
.f3 => 0xF712, .f4 => vaxis.Key.f4,
.f4 => 0xF713, .f5 => vaxis.Key.f5,
.f5 => 0xF714, .f6 => vaxis.Key.f6,
.f6 => 0xF715, .f7 => vaxis.Key.f7,
.f7 => 0xF716, .f8 => vaxis.Key.f8,
.f8 => 0xF717, .f9 => vaxis.Key.f9,
.f9 => 0xF718, .f10 => vaxis.Key.f10,
.f10 => 0xF719, .f11 => vaxis.Key.f11,
.f11 => 0xF71A, .f12 => vaxis.Key.f12,
.f12 => 0xF71B, // Keypad keys: kitty protocol codepoints (vaxis.Key).
.kp_0 => '0', .kp_0 => vaxis.Key.kp_0,
.kp_1 => '1', .kp_1 => vaxis.Key.kp_1,
.kp_2 => '2', .kp_2 => vaxis.Key.kp_2,
.kp_3 => '3', .kp_3 => vaxis.Key.kp_3,
.kp_4 => '4', .kp_4 => vaxis.Key.kp_4,
.kp_5 => '5', .kp_5 => vaxis.Key.kp_5,
.kp_6 => '6', .kp_6 => vaxis.Key.kp_6,
.kp_7 => '7', .kp_7 => vaxis.Key.kp_7,
.kp_8 => '8', .kp_8 => vaxis.Key.kp_8,
.kp_9 => '9', .kp_9 => vaxis.Key.kp_9,
.kp_dot => '.', .kp_dot => vaxis.Key.kp_decimal,
.kp_slash => '/', .kp_slash => vaxis.Key.kp_divide,
.kp_star => '*', .kp_star => vaxis.Key.kp_multiply,
.kp_minus => '-', .kp_minus => vaxis.Key.kp_subtract,
.kp_plus => '+', .kp_plus => vaxis.Key.kp_add,
.kp_enter => '\r', .kp_enter => vaxis.Key.kp_enter,
.kp_equals => '=', .kp_equals => vaxis.Key.kp_equal,
else => 0, else => 0,
}; };
} }