17

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
  • 531
  • 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

2 Answers2

26

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

setxkbmap -layout us

Doug Beney
  • 531
  • 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
9

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.

Martian2020
  • 181
  • 1
  • 10
Tankman六四
  • 1,611
  • 2
  • 18
  • 22
  • 1
    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