왼쪽 및 오른쪽 Shift 키를 개별적으로 매핑하려면 어떻게해야합니까?


10

우선, X와 XKB에 대한 나의 무지를 용서하십시오. 나는 그것을 이해하지 않고도 내가 원하는 것을 성취 할 수 있기를 희망하여 솔루션을 해킹하려고 노력했다.

Ubuntu 12.04에서 XKB 키보드 맵을 작성하여 두 개의 Shift 키 중 어느 것이 Level2 수정자를 구성하는지 지정할 수 있습니다. 특히, 4키는 $왼쪽이 아니라 오른쪽 이동이 유지 될 때만 생성해야합니다 .

지금까지 내 독서 :

사용자 정의 유형을 정의하려고 시도한 후 심볼 맵에서 명시 적으로 참조하십시오.

/usr/share/X11/xkb/types/mbfisher:

default xkb_types "mbfisher" {
  type "RIGHT_SHIFT" {
    modifiers = None+Shift_R;
    map[None] = Level1;
    map[Shift_R] = Level2;
  };
}

/usr/share/X11/xkb/symbols/mbfisher:

default
partial alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]= "mbfisher";

  key <AE04> {
    type= "RIGHT_SHIFT",
    symbols[Group1]= [ 4,  dollar ]
  };

};

그런 다음 Ubuntu Keyboard Layout GUI를 사용하여 맵을 선택합니다.

이렇게하면 4키와 별도로 영숫자 키보드가 비활성화 되지만 달러 기호는 여전히 Shift 키를 사용하여 입력 할 수 있습니다.

나는 쓸모없는 정보가 많은 방대한 질문을 쓰는 것을 의식하고 있으므로 여기서 멈추겠습니다. 내가 놓친 것을 요청하십시오.

어떤 아이디어?

답변:


2

그것이 원하는 솔루션인지는 모르겠지만 왼쪽 Shift 키를 비활성화 할 가능성은 xmodmap을 사용하는 것입니다. ~/.Xmodmap내용이 담긴 파일 만들기

clear shift
add shift = Shift_R

실행합니다 xmodmap ~/.Xmodmap.


댓글 / 채팅보기 :

다른 프로그램에 의해 xkbmap에 다른 수정 사항이 있으면 문제가 발생할 수 있으므로 기본 xkbmap으로 재설정해야 setxkbmap us할 수도 있습니다.

당신은 하나의 시프트 키에 일부 키의 응답을 확인하려면 당신은 당신에게 현재의 키보드 레이아웃을 얻을 수있는 xmodmap -pke > .Xmodmap이 당신을 제공 .Xmodmap의 형태로 모든 키의 목록과 함께 keycode XX = functions. 이 할당에서 각 키코 드는 오른쪽에 여러 기능을 가질 수 있습니다. 각각 다른 수정 자 + 해당 키에 해당합니다. 위에서 clear + add를 삽입하고 다음과 같은 것을 추가 할 수 add mod5 = Shift_L있습니다. 오른쪽 시프트 키는 mod2에 해당하는 반면 왼쪽 키는 mod5에 해당합니다. 왼쪽 시프트 키를 사용하여 호출하려는 키의 mod2 기능을 NoSymbol오른쪽 열 ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N)에 도달 할 때까지 간단히 공백을 삽입하여 mod5로 이동할 수 있습니다 .


기쁘다. 작동 했습니까?
Trudbert

미안, 바쁜 하루. xmodmap을 실행 한 후에도 여전히 두 개의 Shift 키를 사용할 수 있습니다. 변경을 수행하기 위해 다른 작업을 수행해야합니까?
mbfisher 2009 년

당신이 사용할 수있는 시프트 키가 안 그 후 그 나머지는 너무 작업을해야 작동하는 경우 xmodmap을 -e "분명한 변화를"보십시오
Trudbert

아뇨, 여전히 시프트 키가 있습니다. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher 2009 년

이상한. 오류 메시지가 없습니까? clear는 수정 자와 관련된 모든 것을 제거해야하므로 아무것도 남지 않아야합니다. 한 시간 정도면 리눅스 시스템에 손을 대고 다시 살펴 보겠습니다.
Trudbert

2

드디어 효과가 있습니다! 내가 사용 xmodmap하고 ~/.Xmodmap파일이 아닌 XKB 구성.

~/.Xmodmap:

clear Shift

! Key Shift+Key mode_switch+Key mode_switch+Shift+Key AltGr+Key AltGr+Shift+Key
! Key Shift_L+Key Shift_R+Key Shift_R+Shift_L+Key AltGr+Key AltGr+Shift_L+Key

keycode 10 = 1 1 exclam 1
keycode 11 = 2 2 at 2
keycode 12 = 3 3 numbersign 3
keycode 13 = 4 4 dollar 4
keycode 14 = 5 5 percent 5

keysym Shift_R = Mode_switch
add Shift = Shift_L

주석 처리 된 2 줄 (으로 시작 !)은 변경 전후의 열 제목을 보여줍니다. shift_R을 Mode_switch로 매핑 했으므로 col 2를 Shift_L로, col 3을 Shift_R로 지정할 수 있습니다.

다음을 실행하여 변경합니다.

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap us깨끗한 슬레이트에서 작업 할 수 있도록 기본 미국지도를 설정하고 xmodmap사용자 지정 변경 사항을 추가합니다.

구현 될 때 !, @, #, $%문자 만 오른쪽 시프트 키를 입력 할 수 있으며 ^, &, *, ()단지 왼쪽 시프트 키를 입력 할 수 있습니다.

이제 키보드 왼쪽의 모든 키를 오른쪽 Shift 키 (예 : 복수 문자 및 대문자 수정)로만 수정하고 그 반대로도 계속 매핑 할 수 있습니다. 이 솔루션은 왼쪽 만 다시 매핑하면됩니다.

길을 따라 다른 유용한 링크 :

답변에 가장 많은 도움을 주신 @Trudbert에게 대단히 감사합니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.