키 조합을 사용하여 입력 하시겠습니까?


12

예를 들어 WindowsKey를 누른 상태 Super에서 Linux 유형 이라고 부르는 경우 컴퓨터 유형을 "+"문자로 만들고 키를 누를 수있는 방법을 찾고있는 Ubuntu 10.04 사용자입니다 K. 모든 응용 프로그램에서 작동하려면 이것이 필요합니다. (나는 타이핑 장애가있는 사람이므로 우분투를 필요에 맞게 조정해야합니다.) 감사합니다!

답변:


15

모든 응용 프로그램의 키를 다시 매핑하려면 xmodmap을 사용하는 것이 가장 좋습니다. 유연하고 강력하지만 터미널에 몇 가지 명령을 입력해야합니다.

0 단계-접근

X 서버는 키보드와 모든 주요 이벤트를 관리하고 모든 응용 프로그램의 키 코드로 변환합니다.

이 방법은 수정 자 키 (예 : Super 또는 Right Alt 키)를 "모드 스위치"키로 매핑하고 모드 키를 누른 상태에서 키를 눌렀는지 여부에 따라 X 서버에 다른 코드를 생성하도록 지시하는 것입니다.

기본적으로 모드 전환 키가 정의되어 있지 않으며 모든 키는 모드 전환 여부에 관계없이 눌릴 때 동일한 코드를 생성하도록 구성되어 있습니다. 이는 명시 적으로 재정의하는 키를 제외하고 다른 키가 다르게 동작하거나 추가 구성이 필요하지 않기 때문에 좋습니다.

그러나 일부 compiz 플러그인이 슈퍼 키 바로 가기 (예 : 창 선택기, 시프트 스위처 등)를 매핑하기 때문에 compiz를 사용하는 경우 특히 Alt Alt 키를 모드 스위치로 사용하는 것이 좋습니다. 키보드를 통해 compiz를 제어하고 싶지 않다면 Super는 괜찮습니다.

xmodmap에서 수퍼 키는 Super_L 또는 Super_R로 식별됩니다. 모드 전환 키로 사용하려면 하나를 선택해야합니다. 또는 오른쪽 Alt 키는 Alt_R입니다. xev를 실행하고 키보드에서 필요한 키를 눌러이를 확인할 수 있습니다. 단계는 이 게시물 을 참조 하십시오.

1 단계-수정 자 맵 설정

  1. 터미널 ( Applications -> Accesories -> Terminal)을 열고 다음 명령을 실행하여 현재 키 바인딩이 있는 파일을 만듭니다 . 우리는 이것을 출발점으로 사용할 것입니다.

    xmodmap -pke > curkeys.map
    xmodmap -pm >> curkeys.map
    
  2. 좋아하는 텍스트 편집기에서이 파일을여십시오. gedit curkeys.map &gedit에서 엽니 다. 파일 끝 부분에 다음과 같은 줄이 표시됩니다.

    keycode 253 =
    keycode 254 =
    keycode 255 =
    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),  Alt_R (0x6c),  Meta_L (0xcd)
    mod2        Num_Lock (0x4d)
    mod3      
    mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
    mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
    
  3. "xmodmap : 최대 4 ..."로 시작하는 줄을 삭제하십시오.

  4. 수정 자 맵을 다음과 같이 편집하십시오. 각 줄의 시작 부분에 "add"라는 단어를 넣고 수정 자 이름 뒤에 "="를 삽입하십시오. 그런 다음 괄호와 쉼표로 코드를 제거하십시오. 또한 내가 이동 한 점에 유의 Mode_switch으로부터 mod5에 라인 mod3이 비어 이후 라인. 수정 된 표는 다음과 같아야합니다. 실제 내용은 아래의 내용과 약간 다를 수 있습니다 (키보드 레이아웃에 따라 다름).

    add shift =      Shift_L  Shift_R
    add lock  =      Caps_Lock
    add control =    Control_L  Control_R
    add mod1    =    Alt_L Meta_L Alt_R 
    add mod2    =    Num_Lock
    add mod3    =    Mode_switch
    add mod4    =    Super_L Super_R Super_L Hyper_L 
    add mod5    =    ISO_Level3_Shift
    
  5. 물리적 모드 전환 키를 다시 매핑하십시오. 끝에 이와 같은 행을 추가하십시오 (필요한 경우 Super_L을 Super_R 또는 Alt_R로 바꾸십시오).

    keysym Super_L = Mode_switch
    
  6. 수정 자 정의에서 키 이름 (Super_L)을 제거하십시오. Super_L의 경우 mod4 행에서 제거하는 것을 의미합니다.

    add mod4    =    Super_R Hyper_L 
    

    이제 오른쪽 "슈퍼"키는 여전히 일반 슈퍼 키로 작동하지만 왼쪽 키는 특별한 속성을 갖습니다.

  7. 이제 Super_L을 누른 상태에서 눌 렸는지 여부에 관계없이 다른 코드를 생성하려면 키를 다시 매핑해야합니다. 파일에서 시작하는 각 줄은 keycodeMod1 (shift 키) 및 모드 스위치 키를 눌렀는지 여부에 따라 생성 될 각 키에 대해 4 개의 키 심을 지정합니다. ( link )

    !...........................................................................
    !        Key            Base              Shift           Mode    Mode+Shift
    !---------------------------------------------------------------------------
    keycode  13             = 4               dollar          4       quotedbl
    keycode  14             = 5               percent         5       colon
    keycode  15             = 6               asciicircum     6       comma
    keycode  16             = 7               ampersand       7       period
    ...
    keycode  45             = k               K               k       K
    

    Super_L + k 키 누르기가 "+"키를 생성하도록하려면 다음과 같이 수정하십시오.

    keycode  45 = k K plus plus
    

    최종 플러스는 Shift + Super_L + k를 플러스에 매핑하지만 다른 것에 매핑 할 수도 있습니다. 각 키마다 정확히 한 줄을 수정해야합니다. 더 많은 키를 다시 매핑하려면 더 많은 행을 편집하십시오. 정상적인 키 누르기 동작을 유지하려면 처음 두 항목을 그대로 두십시오.

  8. 파일을 저장하고 편집기를 종료하십시오.

  9. 터미널에서 다음 명령을 실행하여 키맵을 설치하십시오. 첫 번째 세션은이 세션에 대해 설정하고 두 번째 세션은 향후 세션에 대해 영구적으로 만듭니다.

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    
  10. 수정 된 키 (예 : Super_L + k)를 눌러 즉시 테스트 할 수 있습니다.

3 단계-지도 추가 / 수정

수정 된 맵이 설치되면 새 키를 쉽게 추가 할 수 있습니다.

  1. xev 를 사용 하여 키 코드 및 키 심을 찾으십시오.

  2. 이 명령을 실행하여 키를 맵핑하여 테스트하십시오.

    xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
    

    꺾쇠 괄호 (예 : <code> <base>등)로 품목 을 적절한 값으로 교체하십시오 .

  3. curkeys.map파일을 백업 하십시오.

  4. 를 열고 curkeys.map해당 키 코드의 행을 편집하십시오.
  5. 아래 명령으로 다시 적용하십시오 (2 단계를 수행 한 경우 첫 번째 명령은 필요하지 않음).

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    

참고 : 1 : 키보드 단축키 (예 System -> Preferences -> Keyboard Shortcuts:)를 수정하면 수정 자 맵에 영향을 미치며 다음 번 로그인시 일반적으로 손실됩니다. 그러니 피하십시오.

참고 : 2 : 때때로이 방법을 사용하는 동안 이와 같은 오류 메시지가 나타납니다. 그러나 이것이 의미하는 바는 알 수 없지만 일반적으로 무해합니다.

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  118 (X_SetModifierMapping)
Value in failed request:  0x17
Serial number of failed request:  263
Current serial number in output stream:  263

xmodmap에 대한 자세한 도움말은 여기를 참조하십시오 .


이것으로 어떤 행운? 이것이 도움이되지 않거나 어떤 식 으로든 불분명 한 pls 의견이 없다면 수정하고 더 유용하게 사용할 것입니다.
koushik

1
노트, 리눅스 민트 17에 Xfce에 (또는이 적어도)가되어야한다는 제발 ~/.Xmodmap, ~/.xmodmap무시됩니다.
zbr

2
unix.stackexchange.com/a/4526/2512에clear 따라 재설정되는 키를 잊지 마십시오
Andy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.