[Shift] + [Space]를 Super/Hyper에 다시 매핑하여 스페이스바를 수정자 키로 사용하려면 어떻게 해야 합니까?

[Shift] + [Space]를 Super/Hyper에 다시 매핑하여 스페이스바를 수정자 키로 사용하려면 어떻게 해야 합니까?

현재 다양한 기능을 갖춘 사용자 정의 키보드 단축키 매핑을 만들려고 합니다.

이를 위해 스페이스바는 넓은 영역을 다루고 많은 키 조합을 쉽게 구현할 수 있는 많은 옵션을 제공하므로 수정자/기능 키(예 Ctrl: Shift, , 등) 역할을 하길 원합니다.Alt

내 생각은 Super 수정자(아마도 또는 ) 를 만들고 실행 Shift한 다음 Super를 사용하여 모든 사용자 정의 단축키를 구축하는 것입니다. (스페이스 바는 일반 위치를 유지하면서 수퍼 키 위치의 물리적 확장 역할만 합니다.)SpaceSuper LSuper R

/usr/share/X11/xkb/symbols/pc기본 스페이스바 기능이 다음과 같은 편집을 시도했습니다 .

key <SPCE> {        [       space           ]       };

쉼표와 다른 매개변수만 추가하면 다음과 같은 두 번째 수준 함수를 얻을 수 있으므로 매우 좋습니다.

key <SPCE> {        [      space, Super_L   ]       };

그러나 스페이스바가 완전히 작동을 멈췄습니다.

고쳐 쓰다:스페이스바를 작동시키고 두 번째 수준에서 수행할 수 있었지만 일부 소프트웨어에서는 스페이스바를 + 로 처리 하고 수퍼 수정자를 올바르게 등록하지 않기 Hyper L때문에 여러 개의 바로가기를 만드는 데 문제가 있습니다 .ShiftHyper L

스페이스 바가 제대로 작동하고 두 번째 수준 수정 키로 작동하도록 할 수 있습니까?

답변1

그래서 제가 찾은 가장 가까운 것은 xmodmap과 xcape를 포함하는 상당히 복잡한 체조 세트입니다. 자세한 내용은 참조하세요.xcape readme의 예제 섹션.

다음은 발췌 내용입니다:

# Map an unused modifier's keysym to the spacebar's keycode and make it a
# control modifier. It needs to be an existing key so that emacs won't
# spazz out when you press it. Hyper_L is a good candidate.
spare_modifier="Hyper_L"
xmodmap -e "keycode 65 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default
xmodmap -e "add Control = $spare_modifier"

# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"

# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space"

이것을 시도했고 수정자 스타일을 사용할 때 Super_L 수정자와 같은 공백을 얻을 수 있었지만 타이밍이 일반 공백을 정상적으로 입력하는 데 방해가 되는 것을 발견하여 다음 날 비활성화했습니다. 아마도 타이밍을 조정하고 작동하게 만드는 방법이 있을 것입니다. 그러나 아직 세부적인 내용은 다루지 않았습니다.

관련 정보