129 lines
2.8 KiB
Nix
129 lines
2.8 KiB
Nix
|
{ config, lib, ... }:
|
||
|
|
||
|
with lib;
|
||
|
|
||
|
let
|
||
|
cfg = config.custom.services.keyd;
|
||
|
in
|
||
|
{
|
||
|
options.custom.services.keyd.enable = mkOption { default = false; };
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
# https://github.com/rvaiya/keyd
|
||
|
#?? keyd list-keys
|
||
|
#!! Enabling xkeyboard-config layouts will underlap with keyd binds
|
||
|
services.keyd = {
|
||
|
enable = true;
|
||
|
|
||
|
#!! Binds use qwerty without layouts
|
||
|
#?? keyd monitor
|
||
|
keyboards.default.settings = {
|
||
|
#// global.disable_modifier_guard = 1; # Disable extraneous Control injection
|
||
|
|
||
|
control.esc = "toggle(qwerty)"; # Control+Esc toggles qwerty
|
||
|
shift.shift = "capslock"; # Both Shifts toggle Capslock
|
||
|
|
||
|
# Emulate function keys
|
||
|
function = {
|
||
|
space = "playpause";
|
||
|
rightalt = "previoussong";
|
||
|
rightcontrol = "nextsong";
|
||
|
backspace = "mute";
|
||
|
minus = "volumedown";
|
||
|
equal = "volumeup";
|
||
|
|
||
|
";" = "pageup";
|
||
|
"." = "pagedown";
|
||
|
"'" = "home";
|
||
|
"/" = "end";
|
||
|
"\\" = "sysrq"; # Printscreen
|
||
|
};
|
||
|
|
||
|
qwerty = {
|
||
|
capslock = "capslock";
|
||
|
backspace = "backspace";
|
||
|
|
||
|
"w" = "w";
|
||
|
"," = ",";
|
||
|
"s" = "s";
|
||
|
"a" = "a";
|
||
|
"c" = "c";
|
||
|
"g" = "g";
|
||
|
"q" = "q";
|
||
|
"e" = "e";
|
||
|
"]" = "]";
|
||
|
"d" = "d";
|
||
|
"/" = "/";
|
||
|
";" = ";";
|
||
|
"'" = "'";
|
||
|
"r" = "r";
|
||
|
"f" = "f";
|
||
|
"t" = "t";
|
||
|
"u" = "u";
|
||
|
"." = ".";
|
||
|
"j" = "j";
|
||
|
"k" = "k";
|
||
|
"p" = "p";
|
||
|
"o" = "o";
|
||
|
"z" = "z";
|
||
|
"h" = "h";
|
||
|
"i" = "i";
|
||
|
"[" = "[";
|
||
|
"v" = "v";
|
||
|
"l" = "l";
|
||
|
"m" = "m";
|
||
|
"n" = "n";
|
||
|
"x" = "x";
|
||
|
"b" = "b";
|
||
|
"y" = "y";
|
||
|
};
|
||
|
|
||
|
main = {
|
||
|
capslock = "backspace";
|
||
|
backspace = "delete";
|
||
|
|
||
|
compose = "layer(function)";
|
||
|
leftmeta = "layer(alt)";
|
||
|
leftalt = "layer(meta)";
|
||
|
rightalt = "layer(meta)";
|
||
|
|
||
|
# Colemak default
|
||
|
"w" = "w";
|
||
|
"," = ",";
|
||
|
"s" = "r";
|
||
|
"a" = "a";
|
||
|
"c" = "c";
|
||
|
"g" = "d";
|
||
|
"q" = "q";
|
||
|
"e" = "f";
|
||
|
"]" = "]";
|
||
|
"d" = "s";
|
||
|
"/" = "/";
|
||
|
";" = "o";
|
||
|
"'" = "'";
|
||
|
"r" = "p";
|
||
|
"f" = "t";
|
||
|
"t" = "g";
|
||
|
"u" = "l";
|
||
|
"." = ".";
|
||
|
"j" = "n";
|
||
|
"k" = "e";
|
||
|
"p" = ";";
|
||
|
"o" = "y";
|
||
|
"z" = "z";
|
||
|
"h" = "h";
|
||
|
"i" = "u";
|
||
|
"[" = "[";
|
||
|
"v" = "v";
|
||
|
"l" = "i";
|
||
|
"m" = "m";
|
||
|
"n" = "k";
|
||
|
"x" = "x";
|
||
|
"b" = "b";
|
||
|
"y" = "j";
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|