키보드 키 코드로 키맵을 일시적으로 변경하는 방법은 무엇입니까?


9

정말의 "동시 바이올렛 모드"기능에 익숙해있다 KeyRemap4MacBook 를 누르면하고 유지 수 sd키를 동시에 누른 다음 사용 h, j, k, 및 l화살표 키와 같은 키를. 시 sd함께 누르면, 어떤 s또는 d이벤트는 트리거되지 않습니다,하지만 일반적으로 입력 할 때 나는 타격과 지연 문제를 통지하지 않습니다 s또는 d개별적으로합니다.

Linux (특히 RHEL 6.4)에서이 기능을 어떻게 다시 만들 수 있습니까?

내가 가진 몇 가지 아이디어 :

  1. 경우 s+는 d수식어에 매핑 될 수있다, 그 키는 h, j, k, l+ 수정 따라 매핑 할 수 있습니다. (현재 사용중인 키보드에는 s+ 대신 사용할 여분의 수정 키가 없으며 d동시 Vi 모드의 요점은 모든 손가락을 홈 행에 유지하는 것입니다. CapsLock이미 Control및로 다시 매핑됩니다 Escape).

  2. 이상적으로, 시스템 설정이나 이미 사용중인 XKB 키보드와 같은 것을 사용 하여이 작업을 수행하는 방법을 찾을 것입니다. 그것이 가능하지 않다면, 아마도 xcape 프로그램 과 비슷한 것 (사용하고 있고 키를 다른 키 누르기 및 수정 자 키 기호에 매핑 할 수 있음)를 작성할 수 있습니다. xcape키 릴리스의 오프 트리거,하지만 그것은 계속 불통되어야 할 것이다, 그래서 s하고 d너무 느리다에서 키를.


RHEL 6.4에서? X에서 또는 터미널을 통해 vim을 사용하고 있습니까?
Otheus

아, 어떻게 CapsLock을 Control AND Escape에 매핑합니까?
Otheus

CapsLock을 컨트롤에 매핑 한 다음 xcape (위 링크)를 사용하여 컨트롤의 짧은 누름을 이스케이프에 매핑합니다. 이 질문에서 나는 Vim 자체가 아니라 KeyRemap4MacBook의 Vi와 유사한 모드를 언급합니다. 지금까지 내가 찾은 가장 유망한 옵션은 Plover가 사용하는 것과 비슷한 방식으로 Python Xlib 모듈을 사용하는 것입니다. 지금까지이 작업을 할 시간이 많지 않았습니다.
ws_e_c421

답변:


2

표준 도구로는이 작업을 수행 할 수 없으며 무언가를 작성해야합니다 (아마도 많은 xserver가 영향을받을 것이므로 X 외부에서 작동하게하려면 커널 변경이있을 것입니다).

그 이유는 디자인이 기반으로하고 (그리고 최적화 된) 아이디어가 일반 키의 코드화 또는 수정 자에서 문자를 방출하지 않기 때문입니다.


나는 아직도 이것을 조사하고있다 (시간이 더 필요하다). X 기반 솔루션을위한 템플릿을 제공하는 것처럼 보이는 Plover 프로젝트를 찾았지만 Wayland로 전환하고 싶습니다. 최근에 libevdev와 libudev를 사용하여 장치를 동적으로 잡고 다시 매핑하는 caps2esc 를 발견 했습니다 . 나는 이와 같은 접근 방식이 리 맵핑 외에도 코드화에 효과적 일 수 있다고 생각하지만 더 조사해야합니다 (나는 또한 libinput 솔루션을 선호합니다).
ws_e_c421

내 libinput 의견이 잘못되었습니다. caps2esc는 libinput의 대안 인 xf86-input-evdev 드라이버와 함께 작동한다고 생각했지만 실제로는 두 프로젝트에서 사용되는 하위 수준 라이브러리 인 libevdev 수준에서 작동합니다. caps2esc 도구차단 도구 프로젝트 로 리팩토링되었습니다 . 차단 도구를위한 잘 작성된 플러그인이 내가 설명한 기능을 제공 할 수 있다고 생각합니다. 조사 할 목록에 있습니다.
ws_e_c421

2

그래서 4 년 후에 마침내이 질문에 대한 답을 대략 초안을 받았습니다. 대답은 libevdev를 사용하여 키보드 입력을 잡고 처리하기 전에 인터 셉션 도구 를 사용하여 키보드를 다시 방출하는 것입니다. 동시 키 매핑에 관해서는, 나는 전화 차단 도구에 대한 대략적인 플러그인 만든 만일 중복 키맵 수 있습니다 h, j, k, l때 화살표 키와 같은 역할을 s하고 d동시에 누르면됩니다.


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