모든 Windows 키에 대한 키코드를 생성하도록 Scroll Lock 키를 다시 매핑하려고 합니다.
먼저 현재 키맵을 덤프합니다.
xkbcomp $DISPLAY original-dump
그런 다음 관심 있는 키의 키코드를 찾으세요.
cat original-dump | grep SCLK
<SCLK> = 78;
cat original-dump | grep LWIN
<LWIN> = 133;
이제 구성 요소 이름을 파일로 인쇄합니다.
setxkbmap -print > original-components
키 코드 수정 사항을 추가하려면 파일을 편집하세요.
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)" };
};
위 파일을 수정된 구성 요소로 저장하고 다음을 실행합니다.
xkbcomp modified-components $DISPLAY
다시 덤프하십시오.
xkbcomp $DISPLAY original-dump
키코드 확인:
cat another-dump | grep SCLK
<SCLK> = 133;
지금까지는 괜찮았지만 xev
Scroll Lock 키에 대한 키코드를 실행하면 여전히78.
내가 실행하면 :
xmodmap -e "keycode 78 = Super_L"
시프아직도 보여줘78, 그러나 최소한 LWIN 및 RWIN용으로 XFCE에서 만든 단축키는 작동합니다.
내가 뭘 잘못했는지 알고 싶어xkb. 감사해요.
답변1
다음과 같은 새로운 접근 방식을 시도했습니다(성공).
sclkfile
이 디렉터리에 새 파일을 만들고 /usr/share/X11/xkb/symbols/
다음 콘텐츠를 추가합니다.
// Make the Scroll Lock key a left Super.
xkb_symbols "sclk_super" {
replace key <SCLK> { [ Super_L ] };
modifier_map Mod4 { <SCLK> };
};
새로운 규칙이 추가되었습니다 /usr/share/X11/xkb/rules/evdev
:
sclkoption:sclk_super = +sclkfile(sclk_super)
그리고 규칙에 대한 설명은 다음과 같습니다 /usr/share/X11/xkb/rules/evdev.lst
.
! option
sclkoption Scroll Lock behaviour
sclkoption:sclk_super Scroll Lock is Super
여기에도 /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>
마지막으로 실행:
$ setxkbmap -option sclkoption:sclk_super
레이아웃의 구성요소를 인쇄할 때 오류가 없습니다.
$ 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)" };
};
새로운 규칙이 있습니다.
이제 실행하면 xev
:
keycode 78 (keysym 0xffeb, Super_R)
키코드는 여전히 78이지만 키 기호는 Super_R입니다.성공.