키 조합을 사용하여 입력 하시겠습니까? Linux 유형 이라고 부르는 경우 컴퓨터

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



답변

모든 응용 프로그램의 키를 다시 매핑하려면 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에 대한 자세한 도움말은 여기를 참조하십시오 .