You need to tell the system that you have that file. I will not tell you how to modify the files -- you will figure it out -- but I will tell you which files to modify.
First, the layouts itself are in /usr/share/X11/xkb/symbols/
. You can either copy the file there with a new extension, or modify one of the existing files to add your layout variant. For example, if your layout is based on the German layout, add a section to /usr/share/X11/xkb/symbols/de
.
Finally, you need to modify /usr/share/X11/xkb/rules/evdev.lst
and /usr/share/X11/xkb/rules/evdev.xml
and add information about your layout / layout variant.
I have the same issue. From the doc, one could guess that the correct syntax would be something like that :
$ setxkbmap -I$HOME/.config/xkb -option mine:accent
Note : ~
doesn't work with the -I
option
with
~/.config/xkb/symbols/azerty_altgr
partial default
xkb_symbols "accent" {
include "level3(ralt_switch)"
key <AE02> { [ NoSymbol, NoSymbol, eacute, NoSymbol ] };
key <AE07> { [ NoSymbol, NoSymbol, egrave, NoSymbol ] };
key <AE09> { [ NoSymbol, NoSymbol, asciicircum, NoSymbol ] };
key <AE10> { [ NoSymbol, NoSymbol, agrave, NoSymbol ] };
};
or whatever symbole file you have and
~/.config/xkb/rules/evdev
! option = symbols
mine:accent = +azerty_altgr(accent)
Unfortunately, it doesn't work.
The only solution I found is the following :
Use the same files described above. Set all native option using setxkbmap -option caps:swapescape,whatever
. Then :
$ setxkbmap -print > tempfile.txt
and edit tempfile.txt
in order to add your custom option in the xkb_symbols
line :
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+fr:2+inet(evdev)+capslock(swapescape)+azerty_altgr(accent)" };
xkb_geometry { include "pc(pc104)" };
};
and finaly :
xkbcomp -I$HOME/.config/xkb tempfile.txt $DISPLAY
It can be generalised for any number of options.
This solution is deprecated according to Archlinux wiki.
Best Answer
Can't your user just click on icon which will run
xkbcomp
orxmodmap
which will load the layout?Edit:
I believe it's not so simple task. You will need to prepare a method of deploying files in places that only root user can access. Probably preparing a system software package (like .deb or .rpm) is best idea. I would use puppet ;-) It would add xkb keyboard layout then you have to add new layout to users' configuration. I can't help you with KDE but in gnome there is a simple tool to get/set settings of dconf – gnome setting store. It is
gsettings
and it can set upxkb
input sources.Example:
read input sources:
setup new keyboard layoyts:
and there will be an input-sources applet in "systray" user can choose from:
But it is for one user only. To make such settings system wide you need to prepare a schema in
/etc/dconf/db/localxkb
:One single software package, which will be installed by user using software management software would do the thing.