19

I made a cool, little script that will edit my /usr/share/X11/xkb/symbols/pc file automatically. It is useful when I want to switch between a Mac or Windows keyboard.

The one problem I've encountered is that I have to log out and then log back in after editing the file in order for the edited configuration to take effect.

I've tried deleting my xkb cache (/var/lib/xkb/*.xkm), but that did work.

Any help would be greatly appreciated. Cheers.

Doug Beney
  • 551
  • 1
  • 4
  • 10
  • 1
    editing the .../symbols/pc file regularly isn't recommended. XKB probably already knows the differences; you just need to know what to tell it to load. if these are different physical keyboards you're switching between, specifying a model will probably do what you want: setxkbmap -model apple -layout us vs -model pc105. – quixotic Oct 25 '17 at 20:40

3 Answers3

26

Solution. Run this command. Of course, you could change "us" to your desired keyboard layout.

setxkbmap -layout us

Doug Beney
  • 551
  • 1
  • 4
  • 10
  • 1
    Does what you say. The key ingredient for me was an additional -variant foo. – primfaktor Apr 25 '19 at 18:55
  • 1
    This actually reload "us" keyboard, but unfortunately disables other keyboard layouts (in case of multi-keyboard use). – Name Sep 05 '20 at 17:38
  • @Name you can set variants and other things as you like, you can also specify 1+ layouts to switch between. You can find more info in man setxkbmap. – WesternGun Apr 23 '21 at 10:58
  • 1
    Thanks. This reloads my changes in /usr/share/X11/xkb/keycodes/evdev. Good. – WesternGun Apr 23 '21 at 11:01
  • Quick note, if you want to select a nondefault variant for a language you can write setxkbmap 'fr(bepo)' where fr is your language and bepo the variant name in the symbol file (not sure if variant is the correct terminology anyway). – oowekyala Mar 08 '24 at 21:14
12

It's answered in Unix Stack Exchange:

https://unix.stackexchange.com/questions/290449/how-to-reload-xserver-after-a-change-in-keyboard-layout

Basically, you do this:

sudo udevadm trigger --subsystem-match=input --action=change

It is also mentioned that the following might be sufficient, please comment on what system setup it alone helped:

# For Ubuntu < 16.04
service keyboard-setup restart
# For Ubuntu >= 16.04
systemctl restart keyboard-setup

You might come across other answers suggesting you delete /var/lib/xkb/*.xkm. That would be an outdated suggestion. At least in Ubuntu, this directory wasn't used for this purpose for quite a few years.

Tankman六四
  • 1,681
  • 2
  • 18
  • 23
  • 2
    That doesn’t actually “reload” the keyboard layout, at least not the current one. When I tried on 18.04, it didn’t pick up any of the changes made in /usr/share/X11/xkb/symbols; only sudo udevadm trigger --subsystem-match=input --action=change (also mentioned in the answer and a comment to it) did the trick. – user149408 Jul 17 '21 at 22:13
1

Run follwing command to reload XKB:

sudo setxkbmap

don't set -layout option. just execute above command.