Make setxkbmap preferences being set at startup

I'm trying to switch left Ctrl key with caps permanently. But with ubuntu native keyboard layout switcher xmodmap did not persisted (this question). So now i just ditched native switcher and using setxkbmap command instead. I created a script:

#!/bin/bash
setxkbmap -model pc104 -layout us,ru -option grp:alt_shift_toggle -option ctrl:swapcaps

It works just as I want to. But now i want to auto run it on system start up. But if I put this under Sturtup Applications it does not work. Apparently something else resets xkb map after my script at start up.

Does anyone know what triggers reset of xkb and how to get rid of it?


Solution 1:

Finally, after much research here's what I found for ubuntu 13.10:

$ sudo apt-get install dconf-tools
$ dconf-editor

navigate to org >> gnome >> desktop >> input-sources

Put your options under xkb-options as a list. Ex: ['altwin:ctrl_alt_win','..etc..']

Then close the dconf-editor. Changes should come live straight away.

... I'd post a screenshot but my reputation on this board isn't high enough, please gimme some points ;)

Ref:

  • How to permanently switch Caps Lock and Esc
  • man 7 xkeyboard-config