I want I J K L to function as arrow keys when CapsLock is pressed down. To do this, I pasted the following to the bottom of the /usr/shar/X11/xkb/symbols/pc file:

partial  partial alphanumeric_keys
xkb_symbols "alpha_arrows" {

    key <AC07>  { symbols[Group2]=[ Left,      Left,      Left,      Left      ] };
    key <AC08>  { symbols[Group2]=[ Down,      Down,      Down,      Down      ] };
    key <AC09>  { symbols[Group2]=[ Right,     Right,     Right,     Right     ] };
    key <AD08>  { symbols[Group2]=[ Up,        Up,        Up,        Up        ] };


I then added the following command to my .bashrc file:

setxkbmap -option grp:caps_switch

This indeed disables CapsLock and allows Alt-CapsLock to toggle the caps lock command. My understanding is that holding CapsLock down should activate the "Group2" key bindings that I set up above... But this simply doesn't happen.

I've tried clearing the cache using rm -rf /var/lib/xkb/* and the restarting the machine several times. Still no dice. Notably, I was able to swap Left-Control and Left-Super, so I know that xkb/symbols/pc is the right file to edit.


  • Is there a way to check/confirm that "Group2" is activated? As you may be able to tell, I only have a tenuous grasp on how this works.

  • Is it valid to just paste that block of code at the bottom of the xkb/symbols/pc file?

  • Is there an equally easy alternative to remap these keys? I'd also be interested in remapping Home, End, etc...

References that have got me this far:

Note: This question seems to be have been asked in various forms around the internet, and I was hesitant to add more noise to the system. But a lot of what I've read has used xmodmap which is now (apparently) outdated. And AutoKey made me want to stab my eyes out.

1 Answer 1


I have just added my custom layout to the gui in elementary OS Loki.

To add my custom layout I do the following:

  1. edit existing xkb/symbols/ru file to add my layout there;
  2. edit evdev.xml file to add the appropriate variant there;
  3. edit evdev.lst file to add the appropriate variant there;
  4. edit base.xml file to add the appropriate variant there;
  5. edit base.lst file to add the appropriate variant there;

It seems, you don't do the steps #3,4,5.

Could you try it and report back?


  1. I've made some testing and ready to say, that the layout definetely appears in the GUI after editing evdev.xml AND evdev.lst.

  2. The appropriate variant seems to be: xkb_symbols "alpha_arrows" so one should add to evdev.lst the following line:

    alpha_arrows gb: Doms l33t layout

  3. Editing base.xml and base.lst seems to be redundant and unnecessary.

EDIT2: Additionally, there seems to be an error in the initial guide. One should add to the evdev.xml

    <description>Dom's l33t layout</description>
  <variantList />

Screen of Custom Layout in the GUI

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .