이러한 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.