Keyboard Layout Customization: Difference between revisions
imported>Infinisil Created page with "= Keyboard Layout Customization = == Simple == The easiest way to customize your keyboard layout on NixOS is with these options: * <code>services.xserver.layout</code>: Key..." |
imported>Infinisil mNo edit summary |
||
Line 1: | Line 1: | ||
== Simple == | == Simple == | ||
Revision as of 23:20, 9 June 2018
Simple
The easiest way to customize your keyboard layout on NixOS is with these options:
services.xserver.layout
: Keyboard layout, or multiple keyboard layouts separated by commas.services.xserver.xkbVariant
: X keyboard variantservices.xserver.xkbModel
: Keyboard model.services.xserver.xkbOptions
: X keyboard options; layout switching goes here.
You can find valid values for these options in $(nix-build --no-out-link '<nixpkgs>' -A xorg.xkeyboardconfig)/etc/X11/xkb/rules/base.lst
Advanced
If the above options aren't enough, you can instead create your own keyboard layout by going through xkb. To get started, install xorg.xkbcomp
and run setxkbmap -print > layout.xkb
to get an initial file. This corresponds to your current layout. Use xkbcomp layout.xkb $DISPLAY
to load the file as your new layout. Refer to https://wiki.archlinux.org/index.php/X_KeyBoard_extension on how to edit this file.
Lots of examples can be found in $(nix-build --no-out-link '<nixpkgs>' -A xorg.xkeyboardconfig)/etc/X11/xkb/
. For available key symbols, see $(nix-build --no-out-link '<nixpkgs>' -A xorg.xproto)/include/X11/keysymdef.h
.
To load this file at the start of the X session, add this to your configuration.nix
:
services.xserver.displayManager.sessionCommands = "${pkgs.xorg.xkbcomp}/bin/xkbcomp ${/path/to/layout.xkb} $DISPLAY";
Relevant other options
services.xserver.exportConfiguration
: Makes it so the above mentioned xkb directory (and thexorg.conf
file) gets exported to/etc/X11/xkb
, which is useful if you have to often look stuff up in it.services.xserver.xkbDir
: Allows you to set a different xkb directory altogether. All the above mentioned things will use this instead of the default one in regards to xkb stuff.i18n.consoleUseXkbConfig
: Makes it so the tty console has about the same layout as the one configured in theservices.xserver
options.