xmodmap
has no notion of state, so it has no way to reset state directly. You can simulate it by using xmodmap -pke >.xmodmap.orig
before making any changes (although it doesn't save the modifier map, which you would have to save and restore manually) — but it's a bit too late for that.
Modern systems don't generally use xmodmap
to configure the keyboard, though. setxkbmap
is the modern way to do it; and that does reset bindings when run. So you may be able to use setxkbmap -layout us
to reset things to normal. More complete would be to check for the default configuration in /etc/X11/xorg.conf
. For example, on my system
jinx:718 Z$ sed -n '/Identifier.*Keyboard/,/EndSection/p' /etc/X11/xorg.conf
Identifier "Generic Keyboard"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbOptions" "grp:alt_shift_toggle"
EndSection
The corresponding command is
setxkbmap -model pc105 -layout us -option grp:alt_shift_toggle
If there were an XkbVariant
entry in the output, you would pass its value with -variant
. One thing to watch out for is that options are handled specially: you can only set one option per -option
parameter, and you need to use -option ''
to reset parameters first. So to fully reset when there is something like XkbOptions "grp:alt_shift_toggle,grp:ctrls_toggle"
you would need
setxkbmap -model pc105 -layout us -option '' -option grp:alt_shift_toggle -option grp:ctrls_toggle