각 키가 지정된 작업을 수행할 수 있는 "매크로 키보드"로 외부 숫자 키패드를 사용하고 싶습니다. xkb_keymap
키를 기호에 매핑하는 사용자 정의를 만들었습니다 XF86
.
$ 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 ] };
};
};
맞춤 키맵이 성공적으로 로드되고 감지되었습니다 xev
. 예:
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
이제 문제가 되는 부분이 있습니다. KDE에서 사용자 정의 키보드 단축키를 생성하면 성공적으로 인식되지만, XF86 keysym
내가 제공한 스크립트는 실행되지 않습니다(따라서 KDE는 단축키를 감지하지 못합니다) WWW
.Terminal
그러나 예를 들어 일부 다른 키(기본 키보드에 내장되어 있음)의 경우에는 그렇지 않습니다 XF86AudioPlay
.
이 문제를 어떻게 해결할 수 있나요?