xkb를 사용하여 명령 및 제어 키를 단계별로 바꾸는 방법은 무엇입니까?


9

Apple의 긴 알루미늄 키보드 를 교체 된 Command Cmd및 Control Ctrl키 와 함께 사용하고 싶습니다 . 이를 사용하여 Trusty Tahr (14.04)에서 어떻게 단계별로 수행 xkb합니까?

참고 : 솔루션은 13.04 또는 이전 버전 으로 xkb교체 xmodmap된 대로 작동하지 않습니다 .


1
이 솔루션은 저에게 효과적이지 않았습니다. 그것은 구식 일 가능성이 큽니다 (실제로 지금은 참조를 찾을 수 없습니다). 게시하기 전에 시도했습니다. 그래서 우분투 버전을 지정했습니다.
Aleksandar Savkov

1
: @WaldirLeoncio 나는이 질문이 중복되지 않는 이유는 취소하게 희망 askubuntu.com/questions/325272/...
알렉산다르 Savkov

답변:


8

이 답변은 대부분 여기에 주어진 답변을 기반으로합니다 . 이 질문을 다시하고 답한 이유는 완전히 설명되지 않은 마지막 단계입니다. 자세한 내용 xkb여기 , 여기여기를 참조하십시오 .

  1. 에서 다음과 같은 매핑을 포함 하는 파일을 /usr/share/X11/xkb/symbols만들 수도 있습니다 (에있을 수도 있음 /etc/X11/xkb/symbols) altwin2.

    // Control is SWAPPED with Win-keys 
    partial modifier_keys
    xkb_symbols "cmd_n_ctrl" {
        key <LWIN> {        [       Control_L               ]       };
        key <RWIN> {        [       Control_R               ]       };
        key <LCTL> {       [       Super_L         ]       };
        modifier_map Control { <LWIN>, <RWIN> };
        modifier_map Mod4 { <LCTL> };
    };
    
  2. option = symbols섹션 아래에 다음 줄을 삽입하십시오 /usr/share/X11/xkb/rules/evdev(첫 번째 줄의 경고는 무시하십시오).

    altwin2:cmd_n_ctrl               =       +altwin2(cmd_n_ctrl)
    
  3. /usr/share/X11/xkb/rules/evdev.lst섹션 아래에 새 옵션을 추가 하십시오 option.

    altwin2:cmd_n_ctrl    Win swapped with Ctrl
    
  4. 키보드 구성 파일이 어디에 있는지 모르는 경우, 당신은 사용하여 편집 할 수 있습니다 dconf-편집기를 추가 "altwin2:cmd_n_ctrl"xkb-options아래 조직 :: 그놈 :: 바탕 화면 : 입력 소스 와 같이 여기 . 구성 파일의 위치를 ​​아는 경우 다음 XkbOptions과 같이 필드에 새 옵션을 포함시켜야합니다 .

    Section "InputClass"
            Identifier "keyboard-layout"
            Driver "evdev"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "us, ru, ca, fr"
            Option "XkbOptions" "altwin2:cmd_n_ctrl"
    EndSection
    
  5. 재부팅하거나 다시 시작 lightdm하여 변경 사항을 업데이트하십시오.

    sudo restart lightdm
    

참고 : 옵션을 사용하지 않고 레이아웃 파일에서 직접 변경 한 경우 여기에/var/lib/xkb/ 표시된대로 캐시 된 파일을 삭제해야합니다 .


2
!option = symbols섹션이 아니 어야합니다 ( 섹션을 options = symbols찾기 위해 "options ="검색에 소요 된 시간).
벤 데이비스


xkb와 xmodmap이있는 대부분의 것들과 마찬가지로 작동하지 않을 것입니다. 아마 다른 방식으로 시스템을 손상 시켰을 수도 있습니다.이 쓰레기가 아프고 리눅스가 키 매핑 및 바인딩에 대한 가장 기본적인 괴물과 함께 쓰레기를 얻을 수 있기를 바랍니다.
Seph

2014 년에 작성되었으며 최신 배포판에는 적용되지 않습니다.
Aleksandar Savkov

3

16.04에서 마침내 이것이 작동하는 방법이 있습니다. Xmodmap은 모든 앱에서 보편적으로 작동하지 않습니다. gnome tweak 도구에는 기능이 없었으며 사용자 정의 altwin2 키 스왑 (여기의 주요 답변과 같은)을 편집하는 데 실패했습니다. 따라서 여러 답변을이 완전하고 간단한 , 그리고 우아한 해결책 :

gksudo gedit /usr/share/X11/xkb/symbols/pc

그것을 다음으로 변경하십시오 :

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC>  {    [ Escape        ]   };

// The extra key on many European keyboards:
key <LSGT> {    [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> {    [ backslash,    bar ]   };
key <SPCE> {    [    space      ]   };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {    [ BackSpace, BackSpace  ]   };

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return        ]   };

key <CAPS> {    [ Caps_Lock     ]   };
key <NMLK> {    [ Num_Lock      ]   };

key <LFSH> {    [ Shift_L       ]   };
key <LCTL> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_R     ]   };
key <RWIN> {    [ Super_R       ]   };
key <MENU> {    [ Menu          ]   };

// Beginning of modifier mappings.
modifier_map Shift  { Shift_L, Shift_R };
modifier_map Lock   { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2   { Num_Lock };
modifier_map Mod4   { Super_L, Super_R };

// Fake keys for virtual<->real modifiers mapping:
key <LVL3> {    [ ISO_Level3_Shift  ]   };
key <MDSW> {    [ Mode_switch       ]   };
modifier_map Mod5   { <LVL3>, <MDSW> };

key <ALT>  {    [ NoSymbol, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
modifier_map Mod1   { <META> };

key <SUPR> {    [ NoSymbol, Super_L ]   };
modifier_map Mod4   { <SUPR> };

key <HYPR> {    [ NoSymbol, Hyper_L ]   };
modifier_map Mod4   { <HYPR> };
// End of modifier mappings.

key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> {    [  Scroll_Lock      ]   };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key  <INS> {    [  Insert       ]   };
key <HOME> {    [  Home         ]   };
key <PGUP> {    [  Prior        ]   };
key <DELE> {    [  Delete       ]   };
key  <END> {    [  End          ]   };
key <PGDN> {    [  Next         ]   };

key   <UP> {    [  Up           ]   };
key <LEFT> {    [  Left         ]   };
key <DOWN> {    [  Down         ]   };
key <RGHT> {    [  Right        ]   };
};

저장.

rm -rf /var/lib/xkb/*

(필요한지 모르겠지만 수행했습니다.)

재부팅하십시오.


고마워 가까운 시일 내에 16.04로 마이그레이션 할 때 테스트합니다.
Aleksandar Savkov 8

내 16.10 업그레이드에서 이것을 사용했습니다. 매우 훌륭하게 일했습니다.
Tom Mercer

1
가장 간단한 답변은 Fedora의 매력처럼 작동했습니다. 감사!
하쿠 닌
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.