setxbdmap을 사용하여 메뉴 키를 Alt 키에 매핑

setxbdmap을 사용하여 메뉴 키를 Alt 키에 매핑

Xubuntu 14.04를 실행하는 Asus X551M에서 다음 키보드 구성을 설정하고 싶습니다.

스페이스바 바로 옆에 있는 수정자 키 쌍은 컨트롤에 매핑됩니다. 다음으로 가장 가까운 쌍이 에 매핑됩니다 Alt.

즉, 내 키보드의 맨 아래 행은 다음과 같습니다.

[ctrl] [fn] [win] [alt] [    space    ] [alt] [menu] [ctrl]

그리고 나는 그 논리가 다음과 같이 동작하길 원합니다:

[ctrl] [fn] [alt] [ctrl] [    space    ] [ctrl] [alt] [ctrl]

(저는 가장 바깥쪽 Ctrl키 쌍을 사용하지 않으므로 매핑이 임의적입니다.)

과거에 xmodmap파일을 수동으로 편집하여 이 작업을 수행했지만 첫 번째 시도에서는 작동하지 않았습니다. 또한 xmodmap로드 시 구성 파일이 잠기는 현상이 알려진 문제입니다. 이 주제에 대해 내가 읽은 모든 내용에는 xmodmap더 이상 사용되지 않으며 사용해야 한다고 나와 있습니다 setxbdmap.

그래서 먼저 다음을 시도합니다.

setxbdmap -option altwin:ctrl_alt_win

이것은 거의 완벽하게 작동합니다. 이제 내 키보드 논리는 다음과 같습니다.

[ctrl] [fn] [alt] [ctrl] [    space    ] [ctrl] [menu] [ctrl]

Menu즉, 키를 에 매핑 하면 됩니다 Alt. 을 사용하여 이를 수행할 수 있는 방법이 있습니까 setxbdmap?

/usr/share/X11/xbd/rules/evdev.lst다음으로 다음 줄을 찾을 때까지 살펴봅니다 .

altwin:menu     Add the standard behavior to Menu key

그리고 시도해 보았으나 아무런 차이가 없는 것 같습니다. 옵션이 있습니다:

ctrl:menu_rctrl   Menu as Right Ctrl

물론 이것이 대신 매핑되는 것을 제외하고는 이것이 제가 원하는 것입니다 Menu. Ctrl그러면 Alt이를 수행할 수 있는 방법이 있습니까 setxbdmap?

답변1

다음 내용으로 파일을 생성할 수 있습니다 ~/.xkb/symbols/local.

xkb_symbols "local" {
    key <LWIN> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <MENU> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <LALT> {         [       Control_L ] };
    key <RALT> {         [       Control_R ] };
};

또는

xkb_symbols "local" {
    key <LWIN> {
        type= "ONE_LEVEL",
        symbols[Group1]= [            Alt_L ]
    };
    key <MENU> {
        type= "ONE_LEVEL",
        symbols[Group1]= [            Alt_R ]
    };
    key <LALT> {         [       Control_L ] };
    key <RALT> {         [       Control_R ] };
};

(또는 그 사이의 것), 원하는 Alt 종류에 따라 다릅니다. X를 시작할 때마다 다음을 수행하십시오(예를 들어 파일이 ~/.xsession있는 경우 파일에서).

mkdir -p .xkb/keymap
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' > $HOME/.xkb/keymap/custom
xkbcomp -w0 -I$HOME/.xkb -R$HOME/.xkb keymap/custom $DISPLAY

두 번째 줄은 when (세 번째 줄)이 이 옵션과 함께 사용되는 ~/.xkb/keymap경우를 xkb_symbols { include "...+local" };포함하는 파일을 생성합니다 . 이 파일을 실행하기 전에 확인할 수 있습니다 .~/.xkb/symbols/localxkbcomp-I$HOME/.xkbxkbcomp

아직 완전히 시도하지는 않았지만 이것은 내가 하고 있는 일을 기반으로 합니다.https://www.vinc17.net/unix/xkb.html( types목차 없음).

관련 정보