
각 키가 지정된 작업을 수행할 수 있는 '매크로 키보드'로 외부 숫자 패드를 사용하고 싶습니다. 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
예를 들어 WWW
또는 를 성공적으로 인식 Terminal
하지만 제공한 스크립트가 실행되지 않습니다(따라서 KDE에서 단축키가 감지되지 않습니다).
그러나 일부 다른 키(내 기본 키보드에 내장되어 있음)의 경우에는 그렇지 않습니다 XF86AudioPlay
.
이 문제를 어떻게 해결할 수 있나요?