diff --git a/flake.nix b/flake.nix index a9f7a51..f24e1aa 100644 --- a/flake.nix +++ b/flake.nix @@ -56,6 +56,7 @@ rachel-home-module ]; }; - + + keyboardLayout.fox = ./shared/fox.xkb; }; } diff --git a/lambda/configuration.nix b/lambda/configuration.nix index 0f64c90..26eaf4d 100644 --- a/lambda/configuration.nix +++ b/lambda/configuration.nix @@ -110,12 +110,17 @@ desktopManager.plasma5.enable = true; displayManager.startx.enable = true; xkbOptions = "grp:alt_caps_toggle"; - layout = "sus"; + layout = "sus,fox"; extraLayouts.sus = { description = "Swedish US"; languages = [ "se" ]; symbolsFile = ../shared/sus.xkb; }; + extraLayouts.fox = { + description = "Layout suitable to be used by a fox"; + languages = [ "se" ]; + symbolsFile = ../shared/fox.xkb; + }; libinput = { enable = true; touchpad = { diff --git a/shared/fox.xkb b/shared/fox.xkb new file mode 100644 index 0000000..2532367 --- /dev/null +++ b/shared/fox.xkb @@ -0,0 +1,71 @@ +partial modifier_keys +xkb_symbols "fox" { + include "pc" + include "se(dvorak)" + + + key { + type[Group1]="ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ] + }; + modifier_map Mod5 { ISO_Level3_Shift }; + + replace key {[ Alt_L, Alt_L, Alt_L, Alt_L ]}; + + modifier_map Shift { }; + modifier_map Mod1 { }; + + key {[ U1F408, U1F431, U1F408, U1F431 ]}; + key {[ 1, ampersand ]}; + key {[ 2, quotedbl, at ]}; + key {[ 3, numbersign ]}; + key {[ 4, dollar ]}; + key {[ 5, percent, infinity ]}; + key {[ 6, asciitilde ]}; + key {[ 7, notsign, U21D0, because ]}; + key {[ 8, U1F449, ifonlyif, U1F97A ]}; + key {[ 9, U1F448, implies, therefore ]}; + key {[ 0, equal, notequal, approximate ]}; + key {[ plus, asterisk, caret, underscore ]}; + key {[ minus, slash, bar, backslash ]}; + + key {[ aring, Aring, U1F4EE, Sinh_ng2 ]}; + key {[ odiaeresis, Odiaeresis ]}; + key {[ adiaeresis, Adiaeresis ]}; + key {[ p, P ]}; + key {[ y, Y ]}; + key {[ f, F ]}; + key {[ g, G ]}; + key {[ c, C ]}; + key {[ r, R ]}; + key {[ l, L ]}; + key {[ parenleft, less, bracketleft, braceleft ]}; + key {[ parenright, greater, bracketright, braceright ]}; + + key {[ a, A ]}; + key {[ o, O ]}; + key {[ e, E ]}; + key {[ u, U ]}; + key {[ i, I ]}; + key {[ d, D ]}; + key {[ h, H ]}; + key {[ t, T ]}; + key {[ n, N ]}; + key {[ s, S ]}; + key {[ exclam, question, exclamdown, questiondown ]}; + key {[ apostrophe, grave, emdash ]}; + + key {[ comma, semicolon ]}; + key {[ period, colon ]}; + key {[ q, Q ]}; + key {[ j, J ]}; + key {[ k, K ]}; + key {[ x, X ]}; + key {[ b, B ]}; + key {[ m, M ]}; + key {[ w, W ]}; + key {[ v, V ]}; + key {[ z, Z ]}; + +}; +