input: distinguish ctrl+j from enter (#149)
`\x0A` was being parsed as an enter keypress. Distinguish this explicitly as a ctrl+j press.
This commit is contained in:
parent
8462b6276e
commit
91a310c933
6 changed files with 8 additions and 9 deletions
|
@ -62,7 +62,7 @@ pub fn main() !void {
|
|||
} else {
|
||||
selected_option.? = selected_option.? -| 1;
|
||||
}
|
||||
} else if (key.matches(vaxis.Key.enter, .{})) {
|
||||
} else if (key.matches(vaxis.Key.enter, .{}) or key.matches('j', .{ .ctrl = true })) {
|
||||
if (selected_option) |i| {
|
||||
log.err("enter", .{});
|
||||
try text_input.insertSliceAtCursor(options[i]);
|
||||
|
|
|
@ -167,12 +167,12 @@ pub fn main() !void {
|
|||
demo_tbl.sel_rows = try rows_list.toOwnedSlice();
|
||||
}
|
||||
// See Row Content
|
||||
if (key.matches(vaxis.Key.enter, .{})) see_content = !see_content;
|
||||
if (key.matches(vaxis.Key.enter, .{}) or key.matches('j', .{ .ctrl = true })) see_content = !see_content;
|
||||
},
|
||||
.btm => {
|
||||
if (key.matchesAny(&.{ vaxis.Key.up, 'k' }, .{}) and moving) active = .mid
|
||||
// Run Command and Clear Command Bar
|
||||
else if (key.matchExact(vaxis.Key.enter, .{})) {
|
||||
else if (key.matchExact(vaxis.Key.enter, .{}) or key.matchExact('j', .{ .ctrl = true })) {
|
||||
const cmd = try cmd_input.toOwnedSlice();
|
||||
defer alloc.free(cmd);
|
||||
if (mem.eql(u8, ":q", cmd) or
|
||||
|
|
|
@ -99,7 +99,7 @@ pub fn main() !void {
|
|||
try loop.start();
|
||||
try vx.enterAltScreen(tty.anyWriter());
|
||||
vx.queueRefresh();
|
||||
} else if (key.matches(vaxis.Key.enter, .{})) {
|
||||
} else if (key.matches(vaxis.Key.enter, .{}) or key.matches('j', .{ .ctrl = true })) {
|
||||
text_input.clearAndFree();
|
||||
} else {
|
||||
try text_input.update(.{ .key_press = key });
|
||||
|
|
|
@ -94,9 +94,8 @@ inline fn parseGround(input: []const u8, data: *const grapheme.GraphemeData) !Re
|
|||
0x00 => .{ .codepoint = '@', .mods = .{ .ctrl = true } },
|
||||
0x08 => .{ .codepoint = Key.backspace },
|
||||
0x09 => .{ .codepoint = Key.tab },
|
||||
0x0A,
|
||||
0x0D,
|
||||
=> .{ .codepoint = Key.enter },
|
||||
0x0A => .{ .codepoint = 'j', .mods = .{ .ctrl = true } },
|
||||
0x0D => .{ .codepoint = Key.enter },
|
||||
0x01...0x07,
|
||||
0x0B...0x0C,
|
||||
0x0E...0x1A,
|
||||
|
|
|
@ -44,7 +44,7 @@ fn typeErasedEventHandler(ptr: *anyopaque, ctx: *vxfw.EventContext, event: vxfw.
|
|||
pub fn handleEvent(self: *Button, ctx: *vxfw.EventContext, event: vxfw.Event) anyerror!void {
|
||||
switch (event) {
|
||||
.key_press => |key| {
|
||||
if (key.matches(vaxis.Key.enter, .{})) {
|
||||
if (key.matches(vaxis.Key.enter, .{}) or key.matches('j', .{ .ctrl = true })) {
|
||||
return self.doClick(ctx);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -102,7 +102,7 @@ pub fn handleEvent(self: *TextField, ctx: *vxfw.EventContext, event: vxfw.Event)
|
|||
} else if (key.matches('d', .{ .alt = true })) {
|
||||
self.deleteWordAfter();
|
||||
return self.checkChanged(ctx);
|
||||
} else if (key.matches(vaxis.Key.enter, .{})) {
|
||||
} else if (key.matches(vaxis.Key.enter, .{}) or key.matches('j', .{ .ctrl = true })) {
|
||||
if (self.onSubmit) |onSubmit| {
|
||||
try onSubmit(self.userdata, ctx, self.previous_val);
|
||||
return ctx.consumeAndRedraw();
|
||||
|
|
Loading…
Add table
Reference in a new issue