이러한 xte 명령이 터미널에서 작동하지만 xbindkey와 바인딩되어 있지 않은 이유는 무엇입니까?


18

xte명령은 터미널에서 실행할 때 Expo 모드를 트리거합니다.

xte 'keydown Super_L' 'key S' 'keyup Super_L'

그러나 이것을 .xbindkeysrc 파일에 넣으면 :

"xte 'keydown Super_L' 'key S' 'keyup Super_L'"
  b:11

버튼을 클릭해도 아무런 변화가 없습니다. 다음 바인딩은 버튼 11을 누를 때 콘솔에 문자 X가 표시되도록합니다.

"xte 'key X'"
  b:11

그렇다면 Expo 바인딩이 작동하지 않는 이유는 무엇입니까?


이것은 xbindkeys -n -v버튼 11을 클릭 할 때 의 자세한 출력입니다 .

버튼 누름!
e.xbutton.button = 11
e.xbutton.state = 16
"xte 'keydown Super_L' 'key W' 'keyup Super_L'"
    m : 0x0 + b : 11 (마우스)
창 2bb에 대한 화면 0을 얻었습니다.
fork + exec 호출로 프로그램 시작
버튼 해제!
e.xbutton.button = 11
e.xbutton.state = 16

그리고 아무 일도 일어나지 않습니다. 이것은 xbindkeys명령을 실행하는 방식과 관련이 있습니까? (포크 + 실행 전화)


두 번째 시도.

expo.sh :

#!/usr/bin/env bash
export DISPLAY=:0
xte 'keydown Super_L' 'key S' 'keyup Super_L'

명령 행에서이 스크립트를 실행하면 Expo가 활성화됩니다. xbindkeys에 바인딩 :

"sh ~/expo.sh"
  b:11

마우스 버튼 11 클릭 :

버튼 누름!
e.xbutton.button = 11
e.xbutton.state = 16
"sh ~ / expo.sh"
    m : 0x0 + b : 11 (마우스)
창 2bb에 대한 화면 0을 얻었습니다.
fork + exec 호출로 프로그램 시작

아무 반응이 없습니다!


1
<Super> <S>를 누르려고합니까? 나는 xbindkeys + xte가 때로는 까다 롭다는 것을 알고 있습니다.
Seth

@Seth : 맞습니다. 까다로운 문제를 해결할 방법이 있습니까?
Hubro

1
시도하십시오 'keydown Super_L' 'keydown S' 'keyup S' 'keyup Super_L'.
Seth

@Seth : 나는 두려운 차이를
만들지

변경 한 후 xbindkey를 다시 시작 했습니까? 때때로 그것은 필요합니다. 궁극적 인 목표는 내가 생각하는 작업 공간 개요를 여는 것입니까?
Seth

답변:


17

또 다른 간단한 해결책 : xbindkeys 정의에서 "b : 11"만 사용하는 대신 "b : 11 + release"를 사용하십시오. 명령을 실행하기 위해 버튼을 놓을 때까지 기다립니다.

예:

"sh ~/expo.sh"
  b:11 + release

2
Hubro는 여기로 돌아와서 정답으로 표시해야합니다.
David Ljung Madison Stellar

7

이것은 매우 이상합니다. Super+W키 입력을 시뮬레이션 할 때 여전히 마우스 버튼을 눌렀다가 (아직 놓지 않은 경우) 아무 일도 일어나지 않는 것으로 나타났습니다 . 누구를 비난해야하는지 모르겠습니다 (아마 시나몬?). 나는 xte명령에 짧은 지연을 추가하여 문제를 해결했습니다 .

xte 'usleep 100000' 'keydown Super_L' 'key S' 'keyup Super_L'

이제 시뮬레이션하기 전에 0.1 초 동안 기다립니다 Super+S. 나는 누르고 마우스 버튼을 누르고 있으면 보다 0.1 초 정도 아무 일도 발생하지 않습니다.

이것은 해결 방법입니다. 나는 정답을 선호합니다.


Hubro, user215129의 높은 점수를받은 답변을 확인하여 정확한 것으로 표시하십시오.
David Ljung Madison Stellar

1
@DavidLjungMadison 아니요. 내 질문에 대한 대답조차 아니며 해결 방법에 대한 제안 일뿐입니다.
Hubro

1
답을 이해하는지 궁금합니다. 문제는 버튼을 여전히 누른 상태에서 키를 보내려고한다는 것입니다. 버튼을 놓을 때까지 기다리면 버튼을 놓을 때까지 키를 보내지 않으므로 문제가 해결됩니다. 해결 방법이 아니라 문제에 대한 설명과 해결 방법입니다.
David Ljung Madison Stellar

1
그렇다면 당신은 여전히 ​​이해하지 못합니다. 문제는 당신이 버튼이 눌러져있는 동안 키를 입력하려고하는 것입니다, 그리고 어떤 엑스포 슈퍼-S,하지 щࣉ =-2 + 슈퍼-S를 찾고 시작합니다. 귀하의 수정 이다 는 버튼이 눌리지하게 유지함으로써 문제가 해결되지 않기 때문에 해결 방법, 그리고 많은 상황에서 작동하지 않습니다. 해결책은 (마우스 이벤트를 다루는 경우와 마찬가지로) 명령을 트리거하기 전에 버튼 릴리스를 기다리는 것이므로 버튼이 키 입력과 혼합되지 않도록합니다.
David Ljung Madison Stellar

2
user215129 답변이 실제로 정확하지 않으며 질문에 답변하지 않음을 확인할 수 있습니다. 지금이 문제에 대해 내 자신의 조사를하고 내 경우에는 릴리스 또는 지연으로 변경하는 것은 옵션이 아닙니다. 버튼을 누르고있는 동안 조치를 수행해야하며 릴리스시 다른 조치가 필요합니다. 참조 : askubuntu.com/questions/984054/…
Ethuil UI

2

나는 같은 문제에 직면했다.

"xte 'key b'"

콘솔에서 작동했지만 xbindkeys 매개 변수 파일에서는 작동하지 않았습니다. "xev"명령을 사용하여 키심 코드로 b를 변경했습니다.

"xte 'key Ox62'"

그것은 나를 위해 일했다



1

sxhkcd keymapper를 사용하는 동안 비슷한 문제가 있습니다. 실제 단축키가 여전히 눌려있는 것으로 감지됩니다.

몇 가지 반 해결 방법이 있습니다.

  • 출시 이벤트를 찾으십시오
  • sleep 0.2당신의 명령 앞에 추가
  • 리더 키와 함께 단축키 사용
  • xte 시퀀스 앞에서 단축키 수정자를 해제하십시오.

그러나 당신은 그 =)로 실시간 액션을 얻을 수 없습니다

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