ags: allow configuring keybinds

https://github.com/end-4/dots-hyprland-wiki/issues/5
This commit is contained in:
end-4
2024-03-05 23:59:55 +07:00
parent dd08a134fc
commit eeb2fb9bc7
5 changed files with 88 additions and 54 deletions
@@ -0,0 +1,26 @@
const { Gdk } = imports.gi;
const MODS = {
'NoMod': Gdk.ModifierType.NO_MODIFIER_MASK,
'Shift': Gdk.ModifierType.SHIFT_MASK,
'Ctrl': Gdk.ModifierType.CONTROL_MASK,
'Alt': Gdk.ModifierType.ALT_MASK,
'Hyper': Gdk.ModifierType.HYPER_MASK,
'Meta': Gdk.ModifierType.META_MASK
}
export const checkKeybind = (event, keybind) => {
const pressedModMask = event.get_state()[1];
const pressedKey = event.get_keyval()[1];
const keys = keybind.split('+');
for (let i = 0; i < keys.length; i++) {
if (keys[i] in MODS) {
if (!(pressedModMask & MODS[keys[i]])) {
return false;
}
} else if (pressedKey !== Gdk[`KEY_${keys[i]}`]) {
return false;
}
}
return true;
}