Scroll Lock 키를 다시 매핑하여 Windows 키의 키코드를 생성하려고 합니다.
우선 현재 키맵을 덤프합니다.
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"
xev아직도 나한테 보여줘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입니다.성공.