¿Cómo puedo hacer que mis Super llaves (Windows) se comporten más como Ctrl / Alt / Shift en Linux?

7

Después de usar el Ctrl + "teclas de flecha" durante 13 años para cambiar los escritorios virtuales en X windows, recientemente me han convencido de cambiar a usar las teclas Super (la tecla de Windows y la tecla del menú contextual, que he vuelto a asignar). Todo esto funciona bien en su mayor parte. Sin embargo, algo sigue captando los eventos clave que estas claves envían como si fueran un tipo alfanumérico normal.

Por ejemplo, lo primero que noté en la hoja de cálculo de Google Docs es que si presiono la tecla de Windows solo sobre la parte superior de una celda, comienza a editar esa celda. No inserta nada, simplemente envía un evento clave que Firefox ve y comienza a editar la celda. Esto causó problemas en un documento de colaboración en el que estaba trabajando como funciona Google docs. Me llevó a borrar accidentalmente los datos en algunos campos antes de darme cuenta de lo que estaba pasando.

Me gusta usar las teclas super, pero quiero que se comporten más como un Ctrl o Alt La tecla hace que es una tecla modificadora y no envía nada hasta que se presiona una segunda tecla.

Mi configuración es la siguiente:

  • Ubuntu 10.10
  • XFCE 4
  • Teclado Microsoft Natural Ergo 4000 (con el logotipo tachado, por supuesto)
  • El siguiente es mi archivo .Xmodmap:

eliminar Lock = Caps_Lock

código clave 66 = Escape

! El siguiente mapa asigna mi otra tecla del menú contextual de Windows.

código clave 135 = Super_R

Editar: Según lo solicitado, aquí está la salida relevante de xev para una pulsación de tecla y liberación de tecla de mi Super_L (tecla de la ventana izquierda)

KeyPress event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849342, (177,174), root:(182,228),
    state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849430, (177,174), root:(182,228),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
deltaray
fuente
1
correr xev y publica las líneas producidas cuando presionas la tecla Win.
Juliano
@Juliano: Publicado en mi pregunta según lo solicitado. He visto esta salida antes y no pude encontrar nada útil para mi problema, pero eso no significa que usted o alguien más no lo haga.
deltaray
Desde su salida xev, no se produce nada cuando se presiona la tecla Win. Entonces, es un misterio para mí por qué Firefox lo interpreta como entrada.
Juliano

Respuestas:

9

Cosas no relacionadas con XFCE

No será exactamente una respuesta a tu problema, lo siento, pero aún así debería ser útil para alguien por lo menos. En Gnome fue arreglado en Ubuntus reciente. Por eso me refiero a tratar Ganar No como una tecla modificadora. En los viejos tiempos, por ej. En Ubuntu 9.04, tenías que hacer el siguiente cambio:

Ir System -> Preferences -> Keyboard, debajo Layouts clic en la pestaña Layout options... botón y en Alt/Win key behavior lista elegir Meta is mapped to Win keys (o Meta is mapped to Left Win ) en lugar de Default.

¿Qué es lo que realmente hace? Cambios altwin opción en $HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xml archivo (o lo crea si no existe):

<?xml version="1.0"?>
<gconf>
        <entry name="options" mtime="1298496603" type="list" ltype="string">
                <li type="string">
                        <stringvalue>altwin     altwin:meta_win</stringvalue>
                </li>
        </entry>
</gconf>

Si has elegido Left Win, entonces habrá siguiente valor de cadena:

altwin     altwin:left_meta_win

En Ubuntu 10.10 no es necesario como Default Al parecer ha cambiado.

Pero tienes XFCE, no Gnome, así que esto no te ayudará.

Cosas relacionadas con XFCE

Descargué Xubuntu (9.10), jugué un poco con él y finalmente encontré una solución.

En primer lugar, sin embargo, debo decir que las configuraciones del teclado están realmente atornilladas en XFCE. En Settings -> Keyboard debajo Layout pestaña no tienes demasiadas opciones. No puedes cambiar XkbOptions allí e incluso si lo haces manualmente en ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml, será sobreescrito. Asi que he cambiado /etc/default/console-setup añadiendo altwin:meta_win a XKBOPTIONS (use la coma como separador si ya hay alguna otra opción). Aún así, no hay suerte.

tl; dr

¿Cual es la solución?

No te preocupes por la forma en que XFCE maneja el teclado, porque aparentemente está roto. Utilizar setxkbmap directamente:

setxkbmap -option altwin:meta_win

(o left_meta_win, lo que sea que prefieras)

Ahora tienes que comprobar que realmente resolvió tu problema. :)

¿Cómo aplicarlo permanentemente?

echo -option altwin:meta_win >>~/.Xkbmap

También se puede hacer para todos los usuarios escribiendo a /etc/X11/Xkbmap en lugar.

¿Cómo puedo comprobar rápidamente si altwin:meta_win o altwin:left_meta_win ¿ha sido aplicado?

setxkbmap -print

Linea con xkb_symbols debería tener algo como altwin(meta_win).

przemoc
fuente
He añadido una solución real en mi respuesta. Por favor, míralo.
przemoc
Sí, el comando setxkbmap -option altwin: meta_win funcionó. Muchas gracias por trabajar a través de una solución. Espero que esto ayude a otros, lo publicaré en @climagic mañana, ya que fue la gente que me animó a usar la tecla de Windows en primer lugar.
deltaray
@deltaray: También debes hacer clic en el botón Bounty. La recompensa no se otorga automáticamente.
harrymc
Gracias @harrymc no me di cuenta de eso. Hice clic en él.
deltaray