응용 프로그램 키맵의 수정 자 키로서의 CapsLock 웹 사이트 개발을 위해

저는 개발자이며 현재 웹 사이트 개발을 위해 PyCharm IDE와 함께 Ubuntu Linux를 사용하고 있습니다. 타이핑 성능을 향상시키기 위해 CapsLock을 Hyper_L로 변경하고 xmodmap을 사용하여 mod3에 할당하는 것을 고려하십시오. 그런 다음 ‘i’키의 mod3을 ‘Up’에 매핑하고 싶습니다. 지금까지 내가 한 일은 :

xmodmap -e "keysym Caps_Lock = Hyper_L"

출력은 다음과 같습니다

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Hyper_L (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)

그런 다음 mod4에서 Hyper_L을 제거합니다

xmodmap -e "remove Mod4 = Hyper_L"

그 후 나는 mod_에 Hyper_L을 할당하려고 시도했다.

xmodmap -e "add Mod3 = Hyper_L"

그러나 다음과 같이 오류가 발생했습니다.

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:  11
  Current serial number in output stream:  11

그래서 여기서 문제가 무엇입니까? 어떻게 작동시킬 수 있습니까? 내 접근 방식이 맞습니까? 또는 사용자 정의 키에 mod3을 사용하려면 다른 접근법을 사용해야합니까?

PS 저는 Microsoft Natural Ergonomic 7000 키보드를 사용하고 있습니다



답변

인터넷에는 bajillion 답변이 있으며, 대부분 혼란 스럽습니다.

핵심은 ‘keycode 66’을 하이퍼 키에 매핑하고 다른 mod {1,2,4,5} (해당되는 경우에만)에서 해당 키의 매핑을 제거한 다음 mod3을 설정해야한다는 것입니다.

~ / .Xmodmap을 열고 다음을 입력하십시오.

! Unmap capslock
clear Lock
keycode 66 = Hyper_L

! Leave mod4 as windows key _only_
remove mod4 = Hyper_L

! Set mod3 to capslock
add mod3 = Hyper_L

이것을 실행

xmodmap ~/.Xmodmap

문제가 발생하면 다음을 사용하여 키보드를 재설정 할 수 있습니다.

setxkbmap -layout us

폭발의 원인은 Hyper_L이 다른 곳에 매핑되어 있기 때문일 수 있습니다. args없이 xmodmap을 실행하여 Hyper_L에 바인드 된 다른 것을 알아 냄으로써이를 수정하십시오. 무엇을 제거해야하는지 알면 .Xmodmap 파일에서 ‘remove BINDING = Hyper_L’을 척척하십시오.

X11 세션을 열면 .Xmodmap 파일이로드되므로 다음에 로그인하거나 재부팅 할 때이 매핑이 있어야합니다.

이 구성은 내 우분투 14.04 설정에서 작동합니다. 다른 * nix를 가지고 있는데 이것이 효과가 없다면 여기에 해결하기 위해 무엇을했는지 게시 해 주시면 답변에 포함시켜 드리겠습니다.


답변

나는이 질문이 상당히 오래되었다는 것을 알고 있지만 (망신스럽게) heymantthew의 대답이 나에게 도움이되지 않았기 때문에 솔루션을 공유해야합니다. 나를 위해 일한 결과 :

setxkbmap -layout us -option lv3:caps_switch -variant intl

그러면 capslock이 mod3 키로 활성화되고 레이아웃이 “us”로 설정되고 변형이 “intl”로 설정됩니다. 물고기와 같은 대화식 쉘을 사용하는 경우 “-layout”, “-option”또는 “-variant”다음에있는 tab을 눌러 가능한 매개 변수의 전체 목록을 얻을 수 있습니다.

추가 배경 : 1 년 전에 표준 그놈 환경에서 전환하여 i3 창 관리자를 실행하는 Ubuntu 시스템에서 xmodmap 접근 방식을 시도했습니다. “us”xkb 키보드 레이아웃, 특히 죽은 키가있는 국제 키보드 레이아웃을 수정했습니다. gnome-desktop-manager를 사용할 때 제대로 작동했습니다 (mods 키로 caps-lock을 설정하는 옵션이 있음). xmodmap과 작동하도록하십시오. 이것은 내 실수 : gdm GUI가 xmodmap을 사용하여 caps lock을 mod3에 매핑한다고 생각했지만 실제로이 X11 옵션을 설정하고있었습니다. 이제 아치로 바꿨으므로 알아 냈습니다.

수면 및 복귀 부분을 추가하여 localectl, xmodmap, setxkbmap 및 테스트 레이아웃의 매뉴얼 페이지를 읽으려면 이것을 망칠 계획이있는 사람에게 권장합니다.

setxkbmap ... ; sleep 10; setxkbmap <INSERT DEFAULT SETTINGS>

이것은 나에게 많은 시간을 절약했다.

그러나 여전히 xmodmap 접근 방식이 어떻게 작동하는지 이해하지 못합니다. 이것이 누군가를 돕기를 바랍니다.


답변