xmodmap
어쩌구 저쩌구 같은 다른 명령과 setxkbmap
결합 할 수 없어서 예상보다 오래 걸리는 작업을 실행하고 있습니다 . 내 목표는 Right_Control
키를 "할당"에서 " 기간별" 로 control
변경하는 것입니다.mod3
xmodmap
이 기사 덕분에 키에 할당할 수 있었습니다.setxkbmap을 사용하여 왼쪽 Shift와 왼쪽 Control 교체
문제는 이제 여전히 Right_Control을 "control"에 할당하고 이 할당을 제거해야 한다는 것입니다.
내가 수행한 단계를 요약하면 다음과 같습니다.
(이전에 fa를 사용자 정의 레이아웃으로 사용하고 있었고 이미 /usr/shareX11/xkb/symbols/fa 등에 파일이 있었습니다...)
mkdir -p ~/.xkb/symbols/keymap
mkdir -p ~/.xkb/symbols/
sudo vi ~/.xkb/symbols/assigningmod3
포함하다
partial modifier_keys
xkb_symbols "assign_rctl_to_mod3" {
modifier_map Mod3 { <RCTL> };
};
그 다음에
setxkbmap -print > ~/.xkb/keymap/fa
sudo vi ~/.xkb/keymap/fa
그리고 밑줄 친 부분을 추가했습니다.
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+fa+inet(evdev)+assigningmod3(assign_rctl_to_mod3)" };
xkb_geometry { include "pc(pc105)" }; ----------------------------------
};
그런 다음 내 .xinitrc에 이 줄을 포함시킵니다.
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/fa $DISPLAY 2> /dev/null
xmodmap
이제 X11Server를 다시 시작하면 할당을 확인할 때 문제가 발생합니다.
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
----------------
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Control_R (0x69)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
보시다시피 제거해야 하는 할당을 강조 표시했지만 다른 한편으로는 mod3
올바르게 할당되었습니다. 수정해야 할 위치를 추적하면 /usr/share/X11/xkb/symbols/level3
92행의 원래 키 할당 에 해당됩니다.
xkb_symbols "switch" {
key <RCTL> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
include "level3(modifier_mapping)"
};
그러나 나는 거기에서 무엇이든 조정할 자신이 없습니다. 배포하는 방법을 알고 있나요?
답변1
xmodmap
전체 템플릿 파일을 로드하기 위해 호출할 때 몇 가지 문제가 발생할 수 있습니다. on을 사용하여 xmodmap
이 키 할당을 제거해도 괜찮습니다 . 아래 호출에 다음 줄을 추가하기 .xinitrc
만 하면 됩니다.xkbcomp
/usr/bin/xmodmap -e 'remove control = Control_R'