It looks like extremely convenient for me to use Control-j instead of Return in xterm and vim, and I want to use this sequence for all X apps.

It can be easily done using xkb by remapping ISO_Level5_Shift to the Control key, and setting Return as a 5th level symbol for j key, but after this all other Control combinations in vim and xterm stop to work (because xterm and vim can't understand Mod keys), and this is absolutely unacceptable.

I've managed to do this without remapping ISO_Level5_Shift by using "LOCAL_EIGHT_LEVEL" key type in the xkb_symbols section, which uses Control (instead of ISO_Level5_Shift) as a Level5 modifier:

    key <AC07> { [ j, J, plusminus, NoSymbol, Return ], type[Group1]= "LOCAL_EIGHT_LEVEL" };

The problem of this solution - xkb sets Control bit, and Control-j returns Control-Return instead of just Return. Sometimes (quite often, btw) this combination doesn't work as Return.

So, what I need is to modify one of these solutions to unset Control bit for Control-j combinations.

According to this link: Arch Wiki article about XKB it can be done, but I don't know how to do this. So, that's my question.

Maybe I have to add some xkb_compatibility rule for Return+Control, or something like this, or add some xmodmap mappings - any solutions would be appreciated.

1 Answer 1


I've found solution for my question. You can assign an action for each key inside xkb_symbols section. Redirect is an action we need:

key <AC07> { [ j,    J,     plusminus,      NoSymbol,      NoSymbol ],
  actions = [ NoAction(), NoAction(), NoAction(), NoAction(), 
                                Redirect(key=<RTRN>, clearmods=all) ]

Using this action you can clear existing modifiers or add new.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.