
Quiero usar un teclado numérico externo como un 'teclado macro' en el que cada tecla pueda realizar una acción específica. Ya he creado una costumbre xkb_keymap
para asignar claves a XF86
símbolos.
$ cat ~/.xinitrc
...
# Active macro keyboard
macrokb=$( xinput list | sed -n 's|.*MOSART.*2\.4G.*id=\([0-9]*\).*keyboard.*|\1|p' | head -n1 )
if [ "$macrokb" ]; then
cat ~/.xkb/macros.xkb | xkbcomp -i $macrokb - $DISPLAY
fi
$ cat ~/.xkb/macros.xkb
xkb_keymap "macros" {
xkb_keycodes {
// 0 - Chrome
<WEB> = 90;
// / - Windows
<WIN> = 106;
// * - Win attach
<ATCH> = 63;
// BS - Win detach
<DTCH> = 22;
// enter - Terminal
<TERM> = 104;
// numlock - Settings
<SETT> = 77;
};
xkb_types {
include "basic"
include "numpad"
};
xkb_compat { include "basic" };
xkb_symbols {
key.type = "ONE_LEVEL";
key <WEB> { [ XF86WWW ] };
key <WIN> { [ XF86Launch0 ] };
key <ATCH> { [ XF86Launch1 ] };
key <DTCH> { [ XF86Launch2 ] };
key <TERM> { [ XF86Terminal ] };
key <SETT> { [ XF86Tools ] };
};
};
El mapa de teclado personalizado se cargó correctamente y xev
. Ejemplo:
KeyPress event, serial 41, synthetic NO, window 0x5800001,
root 0x4f7, subw 0x0, time 5314499, (1656,414), root:(1656,443),
state 0x10, keycode 106 (keysym 0x1008ff40, XF86Launch0), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Ahora aquí viene la parte problemática: cuando creo un atajo de teclado personalizado en KDE, reconoce con éxito, por XF86 keysym
ejemplo, WWW
o Terminal
pero el script que proporcioné no se ejecuta (por lo que KDE no detecta el atajo).
Sin embargo, este no es el caso de algunas otras teclas (integradas en mi teclado principal), por ejemplo XF86AudioPlay
.
¿Como puedo solucionar este problema?