nixos/tests/keymap: add custom layouts test

This commit is contained in:
rnhmjoj 2023-07-18 17:07:19 +02:00
parent fba18d8445
commit e4ab8a7d1e
No known key found for this signature in database
GPG Key ID: BFBAF4C975F76450

@ -29,10 +29,10 @@ let
mkKeyboardTest = layout: { extraConfig ? {}, tests }: with pkgs.lib; makeTest {
name = "keymap-${layout}";
machine.console.keyMap = mkOverride 900 layout;
machine.services.xserver.desktopManager.xterm.enable = false;
machine.services.xserver.layout = mkOverride 900 layout;
machine.imports = [ ./common/x11.nix extraConfig ];
nodes.machine.console.keyMap = mkOverride 900 layout;
nodes.machine.services.xserver.desktopManager.xterm.enable = false;
nodes.machine.services.xserver.layout = mkOverride 900 layout;
nodes.machine.imports = [ ./common/x11.nix extraConfig ];
testScript = ''
import json
@ -201,4 +201,33 @@ in pkgs.lib.mapAttrs mkKeyboardTest {
extraConfig.console.keyMap = "de";
extraConfig.services.xserver.layout = "de";
};
custom = {
tests = {
us.qwerty = [ "a" "b" "g" "d" "z" "shift-2" "shift-3" ];
us.expect = [ "a" "b" "g" "d" "z" "@" "#" ];
greek.qwerty = map (x: "alt_r-${x}")
[ "a" "b" "g" "d" "z" ];
greek.expect = [ "α" "β" "γ" "δ" "ζ" ];
};
extraConfig.console.useXkbConfig = true;
extraConfig.services.xserver.layout = "us-greek";
extraConfig.services.xserver.extraLayouts.us-greek =
{ description = "US layout with alt-gr greek";
languages = [ "eng" ];
symbolsFile = pkgs.writeText "us-greek" ''
xkb_symbols "us-greek"
{
include "us(basic)"
include "level3(ralt_switch)"
key <LatA> { [ a, A, Greek_alpha ] };
key <LatB> { [ b, B, Greek_beta ] };
key <LatG> { [ g, G, Greek_gamma ] };
key <LatD> { [ d, D, Greek_delta ] };
key <LatZ> { [ z, Z, Greek_zeta ] };
};
'';
};
};
}