타일링 창 관리자(현재 xMonad)를 사용하므로 창 관리를 위한 "컨트롤 키" 역할을 하는 키가 필요합니다. Windows/Super/Mod4 키가 있는 키보드를 사용할 때마다 왼쪽 Windows 키를 해당 키로 사용하고 오른쪽 Windows 키를 Compose/Multi_key로 사용합니다.
그러나 Windows 키가 없는(즉, 윙키가 없는) 여러 개의 ([아주] 오래된) 키보드도 있고 "WM 컨트롤"로 (편안하게) 사용할 수 있는 키도 없습니다. 열쇠". 예전에는 xMonad에서 허용했기 때문에 Control+Alt를 "WM 컨트롤 키(조합)"로 사용했는데, 나중에 보니 이것이 (특정) Emacs(이동 명령)에 방해가 되어서 안되는 것 같지는 않습니다. 더 긴 옵션입니다. 그래서 다음과 같은 방법으로 Esc 키를 사용할 수 있다고 생각했습니다.
- Ecs를 보유하면 Mod4처럼 작동합니다.
- Esc를 누르면 Esc와 동일합니다.
AFAIK, Escape를 들고 있으면 대개 아무 일도 일어나지 않기 때문에 이렇게 하는 것이 좋을 것 같다고 생각했습니다. 그런 다음 다음을 사용하여 이를 달성하려고 했습니다 xmodmap
.
clear Mod4
add Mod4 = Super_L Escape
내 기대는 다음과 같습니다. Super_L은 여전히 슈퍼 역할을 하며 Escape는 이제 추가 슈퍼입니다. 다음 단계는 를 xcape
사용하여 이전 Esc 키 동작(일부)을 복원하는 것입니다.
내가 얻는 것(의 결과 xmodmap
):
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), Meta_L (0xcd)
mod2 Num_Lock (0x4d), Hyper_L (0xcf)
mod3 Scroll_Lock (0x4e), Mode_switch (0xcb)
mod4 Escape (0x9), y (0x34), Super_L (0x85), Super_L (0xce)
mod5 ISO_Level3_Shift (0x5c)
내가 이해하지 못하는 것은 다음과 같습니다.
y
갑자기 Mod4로 설정되는 이유는 무엇입니까 ?- Escape가 여전히 Escape로 작동하는 이유(한 번 누르면)그리고Super(누르고 있는 동안, 변경 사항을 테스트하려고 할 때 이 사실을 발견했습니다). 지금은 사용하지 않았지만
xcape
.
이것은 버그입니까 xmodmap
, 아니면 잘못 사용하고 있습니까 xmodmap
? 나는 후자인 것 같지만, 내가 하려는 일을 달성하도록 도와줄 수 있는 사람이 있습니까?
추가 정보(관련성이 없길 바랍니다):
- 현재 운영 체제는 Arch Linux입니다.
- 등과 같은 다른 소프트웨어를 사용하는 솔루션에 열려 있습니다
xkb
.xdotool
- 저는 현재 독일 QWERTZ 레이아웃(예: ANSI가 아닌 ISO)을 사용하고 있으며 때로는네오(내가 아는 한,
de
키맵/레이아웃의 또 다른 변형으로 구현되었습니다. 아래 출력을 참조하세요localectl
.) - 내 솔루션이 효과가 있기를 바랍니다.건반/하드웨어 독립적: 키보드를 변경해도 프로필은 변경하고 싶지 않습니다.
- 누군가 이 문제를 제기하기 전에: Capslock을 세 번째 레이어 수정자 중 하나로 사용하고 다섯 번째 및 여섯 번째 레이어에도 사용되는 Neo 레이아웃을 가끔 사용하기 때문에 Super를 Capslock에 매핑하는 것은 옵션이 아닙니다. 이는 또한 내가 해결책을 원한다는 것을 의미합니다.키보드 레이아웃 독립적, Neo와 QWERTZ 간에 쉽게 전환할 수 있습니다.
- 나는 여전히 다른 제안에 열려 있습니다. 나의 유일한 요구 사항: 다른 프로그램(예: Emacs 또는 Vim)과 간섭이 없거나 최소화되어야 하며, "WM 제어 키"로 사용되는 키(조합)가 키보드 왼쪽에 있어야 합니다. 왜냐하면 내가 사용하는 대부분의 다른 프로그램은 WM을 제어하는 키는 키보드 오른쪽에 있습니다(예: h, j, k, l...).
현재 사례인 변경을 수행하기 전에 xmodmap
출력은 다음과 같습니다.
xmodmap: up to 2 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), Meta_L (0xcd)
mod2 Num_Lock (0x4d), Hyper_L (0xcf)
mod3 Scroll_Lock (0x4e), Mode_switch (0xcb)
mod4 Super_L (0x85), Super_L (0xce)
mod5 ISO_Level3_Shift (0x5c)
내 .Xmodmap
현재는 다음과 같습니다.
add Mod3 = Scroll_Lock
그리고 localectl
말했다:
System Locale: LANG=de_DE.UTF-8
LC_COLLATE=C
VC Keymap: de-latin1-nodeadkeys
X11 Layout: de,de
X11 Model: pc105
X11 Variant: nodeadkeys,neo
X11 Options: compose:rwin,grp:ctrls_toggle
답변1
나는 사용한다X 각도이를 위해. 키를 Super_L
Xmodmap에 매핑하고 xcape -e 'Super_L=Escape'
XMonad가 시작될 때 실행합니다.