xmodmap
може здатися, щоб дати відповідь, але це не так, тому що коди клавіш це маніпулює наявними клавішами на клавіатурі, а не змінено клавіші. A контроль A є модифікованим ключем.
xmodmap
можна лише перепризначити існуючі коди клавіш або (їх імена) ключі ключів, як зазначено у
keycode
NUMBER = KEYSYMNAME ...
keycode
any
= KEYSYMNAME ...
keysym
KEYSYMNAME = KEYSYMNAME ...
Щоб переглянути коди клавіш xmodmap
знає, біжить
xmodmap -pk
який показує щось подібне (скорочено для ясності):
There are 4 KeySyms per KeyCode; KeyCodes range from 8 to 255.
KeyCode Keysym (Keysym) ...
Value Value (Name) ...
8 0x0061 (a) 0x0041 (A) 0x00e5 (aring) 0x00c5 (Aring)
9 0x0073 (s) 0x0053 (S) 0x00df (ssharp) 0x00cd (Iacute)
10 0x0064 (d) 0x0044 (D) 0x08ef (partialderivative) 0x00ce (Icircumflex)
11 0x0066 (f) 0x0046 (F) 0x08f6 (function) 0x00cf (Idiaeresis)
12 0x0068 (h) 0x0048 (H) 0x01ff (abovedot) 0x00d3 (Oacute)
13 0x0067 (g) 0x0047 (G) 0x00a9 (copyright) 0x01bd (doubleacute)
14 0x007a (z) 0x005a (Z) 0x07d9 (Greek_OMEGA) 0x00b8 (cedilla)
...
xev
показує, що насправді відбувається:
KeyPress event, serial 34, synthetic NO, window 0xc00001,
root 0x111, subw 0xc00002, time 2209364614, (27,43), root:(47,86),
state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (01) "^A"
XmbLookupString gives 1 bytes: (01) "^A"
XFilterEvent returns: False
KeyRelease event, serial 34, synthetic NO, window 0xc00001,
root 0x111, subw 0xc00002, time 2209364773, (27,43), root:(47,86),
state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (01) "^A"
XFilterEvent returns: False
Модифікатор управління - це 0x4
в державі; XLookupString
(одна з кількох пов'язаних функцій для об'єднання ключових подій) перетворює keysym для "a" в ^A
(контроль / А).
Тому що для будь-якої з клавіш керування немає ключа ключів, перепризначення кодів клавіш xmodmap
не буде можливим для проблеми ОП.
До вирішити Проблема ОП, треба було б мати спосіб сказати операційній системі (по суті) відмовитися від доставки окремих подій для контроль і A - але Linux і X не працюють так. Обмежуючи область застосування до певної програми (xterm) або набору додатків (програми на основі Gtk), можна звертатися до них окремо. Але рішення, яке застосовується для всієї системи, здається нездійсненним.
screen
, яким я користуюся (хіба щоtmux
доступний). Таким чином, ви повинні ввести Ctrl-A двічі, щоб отримати його. Чи не швидше клацніть мишею, щоб дістатися до потрібної позиції.