Xbindkeys가 제대로 작동하지 않습니다


10

약간의 문제가 있습니다. 이전 시스템에서 익숙했던 일부 단축키를 다시 매핑하고 싶었지만 제대로 작동하지 않습니다 xbindkeys.

xbindkeys 조합을 인식하지만 어떻게 든 명령이 트리거되지 않습니다.

내가 명령을 사용하면

xdotool key braceleft

{콘솔에서 올바른 부호를 출력합니다 . 그러나 xbindkeys에서 동일한 명령을 사용하면 아무 일도 일어나지 않습니다. 명령을 명령으로 firefox바꾸면 제대로 작동하고 firefox가 열리므로 xbindkeys작동합니다.

다음을 달성하고 싶습니다.

문자 {를 활성 창에 Alt_R+ 7또는 Alt_Left+ Ctrl+로 입력 7하여 둘 다 사용할 수 있습니다. 나는 Alt_R(AltGr)이 올바른 방법이라는 것을 알고 있지만 독일어 키보드에서는 AltGr(Alt_R) 키로 중괄호를 입력하는 것이 어려우 므로 대신 이전 시스템에서 사용했던 것처럼 Alt_L+ Control+ 를 사용해야했습니다 7. 어떻게 든 12.04에서 제대로 작동하지만 14.04에서 작동하지 않습니다.

어떤 제안? 몇 가지 명령을 시도했습니다. 모두 콘솔에서 작동했지만 xbindkeys에 의해 실행될 때 아무것도 작동하지 않았습니다.

xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'

이것은 내 구성이며 작동하지 않습니다.

"xdotool key braceleft"
Control+Alt + 7

그러나 이것은 작동합니다.

"firefox"
Control+Alt + 7

솔루션 편집

다른 몇 가지를 시도했을 때 xdotool이 너무 빨리 트리거되는 것으로 나타났습니다. 다음과 같이 구성을 변경했습니다.

"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7

이제 올바른 {기호를 활성 창으로 보냅니다. 이제 남은 유일한 것은 수면과 지연을 가능한 값으로 줄이는 것입니다 .1 초가 너무 길어 보이기 때문입니다. :)

** 추가 정보 ** 이제 적절한 값을 찾을 수있었습니다. 그러나 이것은 수면 시간이 끝날 때까지 키를 놓은 경우에만 작동합니다. 당신이 너무 느리면 작동하지 않습니다.

이것은 모든 불편한 독일어 AltGr 문자에 대한 현재 설정입니다

"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7

"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q

"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e

"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8

"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9

"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0

"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus

그러나 여러 @ 기호를 입력하려면 (예를 들어) 의도 한대로 Ctrl + Alt + Q를 눌러야하지만 모든 키를 놓고 다시 누릅니다. 그러나 이것은 AltGr 대신 Control + Alt 옵션을 사용하지 않는 것보다 훨씬 낫지 만 내가 사용했을 때 효과적이지 않습니다. 어쩌면 나는 이것에 대한 해결책을 찾을 것입니다.


허, 좋은 발견입니다! 자신의 질문에 대답하는 제한은 없으며 시간 제한 만 있습니다. 다시 와서 6 시간 안에 답변으로 게시 할 수 있다면 좋을 것입니다. 당신이 그것에 관심이 있다면 그것은 또한 당신에게 몇 가지 담당자를 줄 것입니다. 정말로 신경 쓰지 않는다면 며칠 안에 답변에 솔루션을 포함시킬 것입니다.
terdon

xdotool누른 상태에서 키를 반복하는 방법을 알아 본 적이 있습니까?
Farzher

솔직히 말해서 지금까지 시도하지 않았습니다. 나는 리그 오브 레전드가 60fps로 원활하게 작동하도록 (12.04에서는 전혀 시작되지 않음) 집에있을 때 항상 게임을하고있었습니다.
Ello

몇 일 동안 지름길을 얻지 못했습니다. 해결책은 간단했습니다. 내 우분투 데스크탑에는 xbindkeys 바로 가기가 있습니다. kayboard 설정을 편집하고 액션으로 새로운 사용자 정의 바로 가기를 추가하십시오xdotool getactivewindow key Home
BurninLeo

독일어 키보드 레이아웃을 시뮬레이션하려는 것 같습니다. 시스템 설정에서 키보드 레이아웃을 전환하지 않는 이유는 무엇입니까?
랩티

답변:


4

문제는 xdotool실제 키으로 Xorg를 누를 때 반복 키 누르기 이벤트 (봐 보낸다 xev출력). 이 문제를 해결하려면 반복 기능을 일시적으로 해제 한 다음 다운 된 키에서 KeyRelease 이벤트를 생성해야합니다.

대신에

"sleep 0.2 && xdotool type --delay 15 '{'"
  Control+Alt + 7

다음을 시도하십시오 :

"xset r off; xdotool keyup --window 0 7 type --clearmodifiers --window 0 '{'; xset r on"
  Control+Alt + 7

답장을 보내 주셔서 감사하지만 XFCE와 함께 Manjaro를 사용하고 있으며 즉시 작동하므로 잠을 자지 않아도됩니다.
Ello

@Ello,이 답변은 귀하만을위한 것이 아니므로 가장 보편적 인 솔루션에 감사드립니다.
midenok

3

다른 몇 가지를 시도했을 때 xdotool이 너무 빨리 트리거되는 것으로 나타났습니다. 다음과 같이 구성을 변경했습니다.

"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7

이제 올바른 {기호를 활성 창으로 보냅니다. 이제 남은 유일한 것은 수면과 지연을 가능한 값으로 줄이는 것입니다 .1 초가 너무 길어 보이기 때문입니다. :)

** 추가 정보 ** 이제 적절한 값을 찾을 수있었습니다. 그러나 이것은 수면 시간이 끝날 때까지 키를 놓은 경우에만 작동합니다. 당신이 너무 느리면 작동하지 않습니다.

이것은 모든 불편한 독일어 AltGr 문자에 대한 현재 설정입니다

"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7

"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q

"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e

"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8

"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9

"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0

"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus

그러나 여러 @ 기호를 입력하려면 (예를 들어) 의도 한대로 Ctrl + Alt + Q를 눌러야하지만 모든 키를 놓고 다시 누릅니다. 그러나 이것은 AltGr 대신 Control + Alt 옵션을 사용하지 않는 것보다 훨씬 낫지 만 내가 사용했을 때 효과적이지 않습니다. 어쩌면 나는 이것에 대한 해결책을 찾을 것입니다.


이것은 매우 이상합니다, 당신이 그것을 해결하게되어 기쁘지만 왜 그런 일이 일어나고 있는지 이해할 수 없습니다. 어쨌든, 이것을 게시하는 데 시간을 내 주셔서 감사합니다. 같은 문제를 가진 다음 사람에게 도움이 될 것입니다.
terdon

대신 키 콤보 sleep에 추가하고 싶다고 생각합니다 + release. 즉 말할 것이다 xbindkeys키가 명령을 트리거하기 전에 릴리스 될 때까지 기다려야.
wjandrea


2

최근 에이 문제가 발생하여 Ctrl + G를 사용하여 미디어 재생 / 일시 중지 (XF86AudioPlay) 키를 시뮬레이트하려고했습니다. 연구 후 Control 키 를 취소해야 할 뿐만 아니라 g 키 ( sleep 0.1지연이 필요했던 것 ). keyupxdotool 내에서 --clearmodifiers 스위치 를 사용하여 이러한 키를 모두 취소 하면 작동합니다. 이것은 내 .xbindkeys.rc 파일의 새로운 명령입니다.

"xdotool keyup g key --clearmodifiers XF86AudioPlay"
Control + g

1

왜 작동하지 않는지 모르겠지만 xbindkeys쓸 창을 지정해야한다고 생각합니다. 해결 방법으로 xvkbd대신 사용할 수 있습니다 .

  1. 설치 xvkbd

    sudo apt-get install xvkbd
    
  2. 이것을 .xbindkeysrc파일에 추가 하십시오

    "xvkbd -text '{'"
    Control+Alt + 7
    

작동합니다.


노트

어떤 이유로, 내 컴퓨터에서 xvkbd기본 레이아웃 (미국 영어) 대신 보조 레이아웃 (스페인어) 중 하나를 사용하고 있으며 이로 인해 {실제로 인쇄 "됩니다. 이 문제가 {있는 경우 사용 된 레이아웃에 해당하는 키를 찾기 위해 조금만 놀아보십시오 . 또는 더 깊이 파고 설정을 xvkbd가져올 위치를 파악할 수 있습니다 locale.


여전히 작동하지 않습니다. 적절한 문자로도. 콘솔에 xvkbd -text 'apple'을 쓰면 사과를 인쇄하고 xbindkeys를 통해 실행하면 아무 일도 일어나지 않습니다. xbindkeys -v를 보면 명령이 눌려진 것을 알 수 있습니다
Ello

나는 그것을 작동 시키지만 다른 것과 함께
Ello

@Ello 좋아! 무엇을 사용 했습니까? 그것은 나를 위해 잘 작동했습니다. 솔루션을 설명하는 답변을 게시하고 수락 할 수 있습니까?
terdon

내 게시물을 변경했는데 평판이 부족하여 내 질문에 대답 할 수 없습니다. 죄송합니다
Ello
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.