descripción

descripción

He visto algunas publicaciones sobre cómo reasignar las teclas de flecha en X11 con XKB, pero aunque funcionan en su mayoría bien, hasta ahora ningún método (excepto el uso de diferentes grupos, que se vuelven complicados de administrar con la configuración del teclado de Gnome) parece funcionar en conjunto. con la Windowsllave.

Estoy intentando reasignar mi teclado para que las teclas HJKL me permitan navegar con un archivo ISO_Level3 modifier.

Intenté asignar las teclas de flecha directamente en ISO_Level3 y medianteredireccionandola clave (doy ambos ejemplos en el código siguiente).

Funcionan bien solos (es decir, puedo usar las teclas de flecha por sí mismas) y también funcionan con CTRLy ALT(es decir, CTRL+ LVL3+ H= CTRL+ LEFT), perono funciona junto con la clave WIN.

Mi archivo de símbolos es:

default partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {
      name[Group1] = "Satan";
      include "us"

      // middle row
      key <AC06> {
        symbols =   [ h, H, Left ],
        actions =   [ NoAction(), NoAction(), Redirect(key=<LEFT>) ] };
      key <AC07> {      [ j, J, Down ] };
      key <AC08> {      [ k, K, Up ] };
      key <AC09> {      [ l, L, Right ] };

      key <AC10> {      [ ISO_Level3_Shift, colon, semicolon, colon ]};
      modifier_map Mod5 { ISO_Level3_Shift };
};

Respuesta1

descripción

Encontré una solución que funciona bien para mí en la mayoría de los casos, pero no todas las aplicaciones parecen interpretar la entrada xkb directamente. Sin embargo, era un poco más complejo que usar el modificador de nivel 3. En mi caso, mapeé CAPSLOCKpara establecer una capa de control llamada Overlay1.

Realmente no entiendo el funcionamiento interno de xkb, pero parece que esta capa no se ve afectada por otros modificadores. Con eso, win+ CAPS+ {h,j,k.l}mueve las ventanas (en mi configuración)

La siguiente es la sección correspondiente demi archivo xkb:

partial modifier_keys xkb_symbols "xy_caps_overlay" {

    replace key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Overlay1_Enable, Overlay1_Enable ],
        actions[Group1] = [ SetControls(controls=Overlay1), LockControls(controls=Overlay1) ]
    };
    // Movement Section
    key <LatH> { Overlay1 = <LEFT> };
    key <LatJ> { Overlay1 = <DOWN> };
    key <LatK> { Overlay1 = <UP>   };
    key <LatL> { Overlay1 = <RGHT> };

    key <TAB>  { Overlay1 = <TAB>  };

    // Editing Section
    key <LatQ> { Overlay1= <Esc>    };

    key <LatZ> { Overlay1 = <UNDO> };
        key <UNDO> { [ VoidSymbol ],
            actions[Group1]=[ RedirectKey(key=<LatY>,modifiers=Control)] 
        };
    key <LatY> { Overlay1 = <REDO> };
        key <REDO> { [ VoidSymbol ],
            actions[Group1]=[ RedirectKey(key=<LatZ>,modifiers=Control)] 
        };
    key <LatX> { Overlay1 = <CUT>  };
    key <LatC> { Overlay1 = <COPY> };
    key <LatV> { Overlay1 = <PAST> };

    key <LatQ> { Overlay1 = <ESC>  };
    key <LatU> { Overlay1 = <HOME> }; 
    key <LatI> { Overlay1 = <END>  }; 

    key <LatP> { Overlay1 = <PGUP> }; 
    key <AC10> { Overlay1 = <PGDN> };

    key <LatD> { Overlay1 = <DELE> };
    key <LatB> { Overlay1 = <BKSP> };

    key <SPCE>  { Overlay1 = <RTRN>  };

}; 

asegúrese de incluir esto partialen su diseño, como

        include "xy(xy_caps_overlay)" 

donde xy es el nombre del archivo en el que se escriben estas configuraciones parciales y xy_caps_overlay es el nombre real de la sección parcial.

nota

Quizás mi expediente sea bastante confuso. Pero tenga en cuenta que TAMBIÉN uso el modificador de tercer nivel (AltGr o Alt derecha) para, a veces, propósitos superpuestos, por lo que también puedo navegar solo con mi mano derecha, pero el uso de AltGr+ Win+ {h j k l}no funciona como se esperaba.

prima

(más abajo en mis archivos hay otras cosas interesantes con las que estoy experimentando, pero no están directamente relacionadas con su pregunta, pero podrían interesarle. Consulte xy_greek_lvl2la sección sobre cómo uso AltGr+ ,o .para bloquear o cambiar el teclado para matemáticas (griego ) personajes.) (es un trabajo en progreso aunque un poco desordenado)

Extracto aquí (en caso de que mueva los archivos)

    key <RTSH> { // Use right shift (with shift) while pressed 
            symbols[Group1] = [ NoSymbol, NoSymbol ], 
            actions[Group1] = [ SetMods(modifiers=Shift,clearLocks), LatchGroup(group=2) ]
    };
    key <AB08> { // use "," for 2nd group (with AltGr) while pressed
            symbols[Group1] = [ NoSymbol, NoSymbol, VoidSymbol, VoidSymbol ], 
            actions[Group1] = [ NoAction(), NoAction(), LatchGroup(group=2) ]

información relacionada