¿Cómo asignar CTRL+A, CTRL+E para que funcione como Inicio y Fin en todo el sistema?

¿Cómo asignar CTRL+A, CTRL+E para que funcione como Inicio y Fin en todo el sistema?

¿Hay alguna manera de asignar CTRL+A y CTRL+E para que funcionen?todo el sistema¿Como moverse al principio de la línea y moverse al final de la línea en consecuencia?

Es decir, me gustaría que estos atajos funcionen perfectamente en cualquier aplicación, no sólo en la terminal (es decir, como en OSX).

Mi sistema principal es Ubuntu con el escritorio Unity, pero sería bueno tener una solución universal que fuera independiente del escritorio, o al menos fuera compatible con Gnome, XFCE y LXDE.

Respuesta1

xmodmapPodría parecer proporcionar una respuesta, pero no es así, porque elcódigos clavemanipula son teclas existentes en el teclado, nomodificadollaves. A controlAes una clave modificada.

xmodmapsolo puede reasignar códigos clave existentes o (sus nombres) símbolos clave, como se enumera en su página de manual:

keycode NÚMERO=NOMBRESÍMBOLO CLAVE...
keycode any=NOMBRESÍMBOLO CLAVE...
keysym NOMBRESÍMBOLO CLAVE=NOMBRESÍMBOLO CLAVE...

Para ver los códigos clave que xmodmapconoce, ejecute

xmodmap -pk

que muestra algo como esto (abreviado para mayor claridad):

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)
     ...

xevmuestra lo que realmente sucede:

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

El modificador de control está 0x4en el estado; XLookupString(una de varias funciones relacionadas para combinar eventos clave) transforma elclavespara "a" en ^A(control/A).

Debido a que no hay un símbolo de clave para ninguna de las teclas de control, xmodmapno será posible reasignar códigos clave usando el problema de OP.

AresolverEl problema de OP es que habría que tener una manera de decirle al sistema operativo que (esencialmente) se niegue a entregar eventos separados para controly A, pero Linux y X no funcionan de esa manera. Limitando el alcance a una aplicación particular (xterm) o un conjunto de aplicaciones (programas basados ​​en Gtk), se podrían abordar por separado. Pero una solución que se aplique a todo el sistema no parece factible.

información relacionada