I'm not sure I exactly what you want, but it's possible set which individual keys (technical keycodes) that should repeat. It does not seem to be possible to set individual rate and delay though
$ xset --help
<snip>
To turn auto-repeat off or on:
-r [keycode] r off
r [keycode] r on
r rate [delay [rate]]
To find the keycode corresponding to a key use eg. xev
:
$ xev -event keyboard
KeyPress event, serial 28, synthetic NO, window 0x5a00001,
root 0x292, subw 0x0, time 354948359, (85,132), root:(86,150),
state 0x10, ==>keycode 24<== (keysym 0x71, q), same_screen YES,
XLookupString gives 1 bytes: (71) "q"
XmbLookupString gives 1 bytes: (71) "q"
XFilterEvent returns: False
I tried turning key repeat off globally and then enabling it for some keys without luck, so seems you have to turn it off for all regular keys :( Some hints follows:
Print out all keycode mappings: xmodmap -pk
. On my system I get a range of 8-255
Turn off repeat for all keycodes:
$ seq 8 255 | xargs -n 1 xset -r
Turn on for arrow keys: (range might be different for you)
$ seq 111 166 | xargs -n 1 xset r
Best Answer
Pressing Ctrl+V will cause the next keypress to be input literally. For Shift+↑ this results in "^[[1;2A". The terminal driver consumes the "^[[1;2" as an invalid escape sequence, leaving only the "A".