Linux에서 추가 키없이 누르면 SHIFT_L / SHIFT_R을 어떻게 매핑 할 수 있습니까?


13

오늘 저는 Steven Losh의이 멋진 기사 에서 생산성을 높이는 키보드 매핑 몇 가지를 소개했습니다. 그중에는 왼쪽 및 오른쪽 Shift 키의 동적 매핑이 있습니다.

아이디어

추가 키없이 Shift_L 또는 Shift_R을 누르면 각각 '('및 ')'에 매핑됩니다. 그렇지 않으면 평소와 같이 작동합니다.

문제

그는 OSX에서이 모든 작업을 수행합니다. 나는 리눅스에서 똑같이 달성하려고합니다. xmodmap을 사용하여 Shift_L에 대해서만 하나의 키를 구성 할 수없고 수정 자 키로 사용될 때 Shift에 대해서는 다른 키를 구성 할 수 없기 때문에이 방법에 대한 간단한 방법은 없습니다.

나는 약간의 구글 검색을 한 결과 AutoHotKey를 사용하여 가능한 Windows에서 동일한 작업을 시도하는 사람들을 발견했지만 Linux를 찾을 수 없었습니다.

리눅스에서 이것을 해결할 수있는 방법이 있습니까?


나는 그것을 시도하지 않았지만 이것은 askubuntu.com/q/24916/11352에
Mansuro

2
이 질문과 거의 동일 합니다. =)
teika kazura

답변:


4

와! 원래 질문에 대한 사용자 teika kazura의 의견은 매우 정확합니다. 이것은 실제로 다른 질문 의 복제본 일뿐만 아니라 제공된 문제 ( "use xcape ")가이 문제를 해결합니다!

xcape 저장소를 복제하고 컴파일 한 후 (먼저 Fedora 상자에 libXtst-devel을 설치해야 함) 다음 명령으로 요청 된 정확한 동작을 얻을 수있었습니다.

xcape -e "Shift_L=parenleft;Shift_R=parenright"

명백히 커리큘럼 테스트를 한 후에는 매우 잘 작동하는 것 같습니다 . 좋은!

다른 옵션

Shift 키를 마우스 수정 자로 사용하는 경우 (즉, 아무 것도 Shift 클릭하면) xcape의 시간 초과 옵션을 포함하고 편안한 시간 초과 값을 찾아서 마우스와 함께 사용되는 독주 Shift 키 누르기를 원할 수 있습니다. 가짜 괄호를 생성하지 마십시오. xcape README에서 :

-t <timeout ms>

이 시간 초과보다 긴 키를 보유하면 xcape는 키 이벤트를 생성하지 않습니다. 기본값은 500ms입니다.

따라서 -t시간 제한 값이 있는 플래그를 포함 시키면 Shift 키를 밀리 초 이상 누르고 있으면 마우스로 Shift 키를 누른 채 클릭 할 수 있습니다 timeout ms.

(신용, 다시에 테이 카 kazura 다른 문제를 지적하고, 또한하기위한 don_crissti 가 원래의 대답.)


이 방법의 한 가지 문제점은 [Shift] + [LMouse]를 눌러 편집기에서 일부 텍스트를 선택하는 것입니다. 흥미롭게도 숭고한 텍스트는 [Ctrl] + [LMouse]를 사용하므로 [Ctrl]을 다시 매핑하는 것에 대한 질문도 문제를 일으 킵니다.
AnnanFay

@Annan xcape의 타임 아웃 옵션 조정을 실험 해 보셨습니까? 읽어보기에서 : " -t <timeout ms>이 시간 초과보다 키를 길게 누르면 xcape는 키 이벤트를 생성하지 않습니다. 기본값은 500ms입니다." ... xcape가 수정 자의 키 다운 이벤트를 방해하지 않는 한 (나는 그것을 기억할 수 없다), 그것은 가짜 키 누르기를 생성하지 않아야하며, 마우스를 길게 잡고있는 한 마우스 선택 수정 자로 사용할 수 있습니다. .
FeRD

@Annan 잘 들었습니다. -t국기 활용을 제안하기 위해 답변을 업데이트했습니다 !
FeRD

1

그것은 흥미로운 도전이며, 나는 xinput이 완벽하게 적합하지 않은 것으로 동의합니다. 나는 xmodmap을의 능력으로 주변에 바이올린을 켜는 시간을 소요하고 절망적 그래서 온 가까운 실제로 거기까지 관리없이 ... 당신이 원하는 것을 달성하기 위해.

xmodmap을 사용하면 왼쪽 시프트 키에서 parenleft를 시프트 키로 지정할 수 있습니다.

xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'

이는 그렇다고 만족스러운 방법으로 내 페도라 17 상자에서 테스트 적어도 작품,하지만. 이 매핑을 사용하면 Shift 키가 여전히 정상적으로 작동하고 가짜 패런을 렌더링하지는 않았지만 (매끄럽게) 왼쪽 파렌을 안정적으로 생성하지 못했습니다. 어떤 이유를 들어, 키는 안정적으로 수정 나타나지 않습니다 자체를 처음 ... 그 이동 할당을 중단한다. 어떤 이유로 든, 왼쪽 교대를 연속해서 몇 번 치는 것은 결국 왼쪽 파 렌스 생산을 시작하지만 4 번 또는 5 번을 누른 후에 만 ​​가능합니다.

하나 개의 행동 나는 당신이 가진 "근처 충분히"아날로그로 작업 할 수 있습니다, 그러나, 통보 : 나는 Shift_L 및 Shift_R 상에 매핑 parenleft 및 parenright 후, 나는 확실하게 모두 시프트 키를 통해 "롤링"에 의해 괄호를 입력 할 수 있습니다 발견 즉,이 매핑을 사용하면 다음과 같습니다.

xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
xmodmap -e 'keysym Shift_R = Shift_R parenright Shift_R parenright'

Shift_L과 Shift_R을 차례로 누른 다음 둘 다 해제하면 오른쪽 방향 또는 왼쪽 방향으로 출력됩니다. (물론지도 매핑은 물론 역전 될 수있다. 어떤 방법이 더 "자연스러워"느껴질 지 결정할 수 없었다.)

그것은 당신이 찾고있는 정확한 행동을 달성하는 것과 비슷했습니다. xmodmap 만 사용하는 것이 가능하지 않은 것 같습니다.

나는 그것이 불가능하다는 것을 반쯤 확신했다. 그러나 나는 당신이 묘사 한대로 정확히 기능 하는 하나 이상의 키가 있다는 것을 깨달았다 . 슈퍼 ( "Windows") 키. Gnome Shell에서이 키는 모디파이어 키 (mod4)로, 단독으로 눌렀을 때 다른 효과 (트리거 개요)를 생성합니다. 따라서 적어도 이론 상으로는 동일한 방식으로 원하는 Shift 키 오버로드를 구현할 수 있습니다.

...하지만 Shift 키를 누를 때마다 필요한 처리 과정이 어떻게 진행되는지, 또는 얼마나 침습적 일지 모릅니다. :-)


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