diff options
-rw-r--r-- | modules/workstation/hardware/default.nix | 13 | ||||
-rw-r--r-- | modules/workstation/hardware/events.dyon | 12 | ||||
-rw-r--r-- | modules/workstation/windowing/default.nix | 4 | ||||
-rw-r--r-- | sys/x220.nix | 2 |
4 files changed, 27 insertions, 4 deletions
diff --git a/modules/workstation/hardware/default.nix b/modules/workstation/hardware/default.nix index a81508c7ed3b..bd5bd9ce12e8 100644 --- a/modules/workstation/hardware/default.nix +++ b/modules/workstation/hardware/default.nix @@ -1,6 +1,17 @@ -{ ... }: +{ pkgs, config, ... }: +let + xcfg = config.services.xserver; + +in { i18n.consoleUseXkbConfig = true; services.xserver.layout = "dvorak"; + services.xserver.xkbOptions = "ctrl:nocaps"; + + environment.variables.XKB_DEFAULT_LAYOUT = xcfg.layout; + environment.variables.XKB_DEFAULT_OPTIONS = xcfg.xkbOptions; + + services.evscript.enable = true; + services.evscript.script = ./events.dyon; } diff --git a/modules/workstation/hardware/events.dyon b/modules/workstation/hardware/events.dyon new file mode 100644 index 000000000000..2d8c8bfa87df --- /dev/null +++ b/modules/workstation/hardware/events.dyon @@ -0,0 +1,12 @@ +//! [events] +//! keys = ['ESC'] +fn main() ~ evdevs, uinput { + should_esc := false + loop { + evts := next_events(evdevs) + for i { + evt := evts[i] + xcape(mut should_esc, evt, KEY_CAPSLOCK(), [KEY_ESC()]) + } + } +} diff --git a/modules/workstation/windowing/default.nix b/modules/workstation/windowing/default.nix index 0ee51bf20e3c..abe794ce2622 100644 --- a/modules/workstation/windowing/default.nix +++ b/modules/workstation/windowing/default.nix @@ -1,7 +1,5 @@ -{ pkgs, ... }: +{ ... }: { imports = [ ./alacritty ./firefox ./sway ]; - - environment.variables.XKB_DEFAULT_LAYOUT = "dvorak"; } diff --git a/sys/x220.nix b/sys/x220.nix index d525ae368087..b8b973152f0a 100644 --- a/sys/x220.nix +++ b/sys/x220.nix @@ -47,4 +47,6 @@ hardware.opengl.enable = true; hardware.opengl.extraPackages = with pkgs; [ libGL ]; + + services.evscript.devices = [ "/dev/input/by-path/platform-i8042-serio-0-event-kbd" ]; } |