mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
apprt/glfw: new keycallback for unmapped
This commit is contained in:
@ -850,6 +850,7 @@ pub fn keyCallback(
|
|||||||
self: *Surface,
|
self: *Surface,
|
||||||
action: input.Action,
|
action: input.Action,
|
||||||
key: input.Key,
|
key: input.Key,
|
||||||
|
unmapped_key: input.Key,
|
||||||
mods: input.Mods,
|
mods: input.Mods,
|
||||||
) !void {
|
) !void {
|
||||||
const tracy = trace(@src());
|
const tracy = trace(@src());
|
||||||
@ -870,13 +871,24 @@ pub fn keyCallback(
|
|||||||
self.ignore_char = false;
|
self.ignore_char = false;
|
||||||
|
|
||||||
if (action == .press or action == .repeat) {
|
if (action == .press or action == .repeat) {
|
||||||
const trigger: input.Binding.Trigger = .{
|
const binding_action_: ?input.Binding.Action = action: {
|
||||||
|
var trigger: input.Binding.Trigger = .{
|
||||||
.mods = mods,
|
.mods = mods,
|
||||||
.key = key,
|
.key = key,
|
||||||
};
|
};
|
||||||
|
|
||||||
//log.warn("BINDING TRIGGER={}", .{trigger});
|
//log.warn("BINDING TRIGGER={}", .{trigger});
|
||||||
if (self.config.keybind.set.get(trigger)) |binding_action| {
|
|
||||||
|
const set = self.config.keybind.set;
|
||||||
|
if (set.get(trigger)) |v| break :action v;
|
||||||
|
|
||||||
|
trigger.key = unmapped_key;
|
||||||
|
trigger.unmapped = true;
|
||||||
|
if (set.get(trigger)) |v| break :action v;
|
||||||
|
|
||||||
|
break :action null;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (binding_action_) |binding_action| {
|
||||||
//log.warn("BINDING ACTION={}", .{binding_action});
|
//log.warn("BINDING ACTION={}", .{binding_action});
|
||||||
|
|
||||||
switch (binding_action) {
|
switch (binding_action) {
|
||||||
|
@ -683,8 +683,10 @@ pub const Surface = struct {
|
|||||||
=> .invalid,
|
=> .invalid,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO: we need to do mapped keybindings
|
||||||
|
|
||||||
const core_win = window.getUserPointer(CoreSurface) orelse return;
|
const core_win = window.getUserPointer(CoreSurface) orelse return;
|
||||||
core_win.keyCallback(action, key, mods) catch |err| {
|
core_win.keyCallback(action, key, key, mods) catch |err| {
|
||||||
log.err("error in key callback err={}", .{err});
|
log.err("error in key callback err={}", .{err});
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user