X에서 수정자 키를 문자 키로 바꾸는 방법은 무엇입니까?

X에서 수정자 키를 문자 키로 바꾸는 방법은 무엇입니까?

left Windows-key를 -key로 바꾸려고 합니다 <>|. 이는 vterm에서 매우 잘 작동하며, 키맵 파일을 사용하면 이를 수행할 수 있습니다. 그러나 X에서는 작동하지 않습니다. (KDE와 Mate에서 시도했는데 둘 다 동일한 동작을 나타냄)

xkb를 사용 하든 xmodmapxkb 기호 구성을 사용하든 결과는 동일합니다. -key가 작동을 멈추고 -key는 여전히 키이지만 <>|눌렀을 때 left Windows여전히 표시됩니다 .<

xev<>|-key의 코드가 94이고 내 -key의 코드가 133이라는 것을 확인 하여 left Windows다음을 시도했습니다.

xmodmap -e "keycode 133 = less greater bar NoSymbol U0149 brokenbar U266A NoSymbol"
xmodmap -e "keycode 94 = Super_L"

내가 시도한 xkb 기호 구성은 다음과 같으며 위와 동일한 효과를 갖습니다.

partial alphanumeric_keys
xkb_symbols "defoo" {
  include "de(basic)"
  name[Group1] = "German (foo)";
  key <LWIN> { [ less, greater, bar, NoSymbol, U0149, brokenbar, U266A, NoSymbol ] };
  key <LSGT> { [ Super_L ] };
};

무엇을 해야 할까요? 이 열쇠를 교환해야 해요.

편집 : Ubuntu 18.04를 사용하고 있습니다

편집: 또한 수정자 키를 조작해 보았습니다. xmodmap -pm내 슈퍼 키가 mod4에 할당되어 있다고 가정해 보겠습니다.

xmodmap -e "clear mod4"

그러나 이는 아무런 효과가 없습니다. 즉, Windows 키가 이전과 동일하게 작동합니다.

답변1

나는 이것을 피하고 싶었지만 결국 키코드 파일의 키를 evdev로 교체하여 원하는 효과를 얻었습니다.

전문적인:

  • 키 누름에 대한 이벤트 코드를 변경하므로 모든 레이아웃 및 애플리케이션에서 투명하게 작동합니다.

결점:

  • 모든 evdev 키보드와 작동
  • 변경 사항이 시스템 파일에 적용됩니다(나중에 손상될 수 있음).

차이점:

$ diff /usr/share/X11/xkb/keycodes/evdev{,.bak}
8c8
<         <LWIN> = 94;
---
>         <LSGT> = 94;
74c74
<   <LSGT> = 133;
---
>   <LWIN> = 133;

관련 정보