Reasignación de una clave para XKB

Reasignación de una clave para XKB

Estoy intentando reasignar la tecla Bloq Despl para que produzca el código clave de cualquiera de las teclas de Windows.

En primer lugar, descarto el mapa de teclas actual:

xkbcomp $DISPLAY original-dump

Luego busque los códigos clave de las claves que me interesan:

cat original-dump | grep SCLK
 <SCLK> = 78;

 cat original-dump | grep LWIN
 <LWIN> = 133;

Ahora imprimo los nombres de los componentes en un archivo:

setxkbmap -print > original-components

Edite el archivo para agregar mi modificación de código clave:

    xkb_keymap {
    xkb_keycodes  { 
        include "evdev+aliases(qwerty)" 
        // Remap Scroll-lock to the keycode of LWIN(133)
        <SCLK> = 133;
    };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
    };

Guardó el archivo anterior como componentes modificados y ejecutó:

xkbcomp modified-components $DISPLAY

Volcar de nuevo:

xkbcomp $DISPLAY original-dump

Verifique los códigos clave:

cat another-dump | grep SCLK
<SCLK> = 133;

Hasta ahora todo bien, pero cuando ejecuto xev, el código clave de la tecla Bloq Despl sigue estando78.

Si corro:

xmodmap -e "keycode 78 = Super_L"

xevtodavía me muestra78, pero al menos funcionan los accesos directos que creé en XFCE para LWIN y RWIN.

Me gustaría saber en qué estoy haciendo malxkb. Gracias.

Respuesta1

Probé el siguiente nuevo enfoque (con éxito)

Creó un nuevo archivo nombrado sclkfileen el /usr/share/X11/xkb/symbols/directorio y agregó el siguiente contenido:

 // Make the Scroll Lock key a left Super.
xkb_symbols "sclk_super" {
    replace key <SCLK> { [ Super_L ] };
    modifier_map  Mod4 { <SCLK> };
};

Se agregó la nueva regla en /usr/share/X11/xkb/rules/evdev:

sclkoption:sclk_super = +sclkfile(sclk_super)

Y descripciones de la regla en /usr/share/X11/xkb/rules/evdev.lst:

! option
sclkoption           Scroll Lock behaviour
sclkoption:sclk_super Scroll Lock is Super

Aquí también /usr/share/X11/xkb/rules/evdev.xml:

<configItem>
        <name>sclkoption</name>
        <description>Scroll Lock behaviour</description>
</configItem>    
<option>
    <configItem>
        <name>sclkoption:sclk_super</name>
        <description>Scroll Lock is Super</description>
    </configItem>
</option>

Finalmente ejecuta:

$ setxkbmap -option sclkoption:sclk_super

Sin errores y cuando imprimo los componentes de mi diseño:

$ setxkbmap -print
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+us+inet(evdev)+sclkfile(sclk_super)"     };
        xkb_geometry  { include "pc(pc105)"     };
};

La nueva regla está ahí.

Ahora, si ejecuto xev:

keycode 78 (keysym 0xffeb, Super_R)

El código clave sigue siendo 78 pero el símbolo clave es Super_R.Éxito.

información relacionada