The short answer: you can't.
What happens when you press Ctrl+j is that you get a sequence of events:
- "Ctrl key pressed"
- "J key pressed (Ctrl held)"
- "J key released (Ctrl held)"
- "Ctrl key released".
With tools like xmodmap, you can change which physical key corresponds to "Ctrl" and "J" (strictly: which keysyms are mapped to which key), but you can't influence just the combination.
What you could do is try to intercept the keystrokes and atrificially emit others; in this case:
- "Ctrl down" - pass through
- "J down (Ctrl held)" - replace with "K down (Ctrl held)"
- "J up (Ctrl held)" - replace with "K up (Ctrl held)"
- "Ctrl up" - pass through.
I understand there's at least one set of tools (xbindkeys
and xmacro
) that should allow you to do this, but I haven't tried them myself, and learning how to do this may leave you without the ability to enter a "J", so do it with care (and make sure you can reboot into a default state until you're happy with the result). I found the tool description here.