Почему эти команды xte работают в терминале, но не при привязке с xbindkeys?

Это xte команда, когда я выполняю его в терминале, инициировала режим Expo:

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

Однако, когда я поместил это в свой .xbindkeysrc файл:

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

Ничего не происходит, когда я нажимаю кнопку. Следующая привязка заставляет букву X появиться в моей консоли, когда я нажимаю кнопку 11:

"xte 'key X'"
  b:11

Итак, почему привязка Экспо не работает?


Это - подробный вывод xbindkeys -n -v при нажатии на кнопку 11:

Button press !
e.xbutton.button=11
e.xbutton.state=16
"xte 'keydown Super_L' 'key W' 'keyup Super_L'"
    m:0x0 + b:11   (mouse)
got screen 0 for window 2bb
Start program with fork+exec call
Button release !
e.xbutton.button=11
e.xbutton.state=16

И ничего не происходит. Делает это имеет какое-либо отношение к пути xbindkeys выполняет команду? (fork+exec вызов)


Попытка номер два.

expo.sh:

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

Выполнение этого сценария из командной строки активирует Экспо. Привязка его в xbindkeys:

"sh ~/expo.sh"
  b:11

Нажатие на кнопку мыши 11:

Button press !
e.xbutton.button=11
e.xbutton.state=16
"sh ~/expo.sh"
    m:0x0 + b:11   (mouse)
got screen 0 for window 2bb
Start program with fork+exec call

Ничего не происходит!

18
задан 19 July 2014 в 09:57

5 ответов

Это очень странно. Оказывается этим, если моя кнопка мыши все еще нажимается (еще не выпущенный) когда Super+W нажатие клавиши моделируется, ничего не происходит. Я не знаю, кто обвинить в этом (возможно, Корица?). Я работал вокруг этого хотя путем добавления малой задержки к xte команда:

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

Это теперь ожидает за 0.1 секунды до моделирования Super+S. Если я нажимаю и удерживаю кнопку мыши больше чем 0,1 секунды, ничего не происходит.

Это - ответ обходного решения. Я очень предпочел бы надлежащий ответ.

7
ответ дан 23 November 2019 в 02:09

Другое простое решение: вместо того, чтобы использовать просто "b:11" в xbindkeys определении, используйте "b:11 + выпуск". Это будет ожидать, пока Вы не отпустите кнопку для увольнения команды.

Пример:

"sh ~/expo.sh"
  b:11 + release
17
ответ дан 23 November 2019 в 02:09

Я столкнулся с той же проблемой.

"xte 'key b'"

работал в консоли, но не в xbindkeys файле параметра. Я изменил b его кодом keysym, с помощью команды "xev" для получения его:

"xte 'key Ox62'"

Это работало на меня

2
ответ дан 23 November 2019 в 02:09

Попробуйте +Release

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

Это может помочь.

1
ответ дан 23 November 2019 в 02:09

Имейте подобную проблему при использовании sxhkcd keymapper. Оказывается, что Ваши фактические сочетания клавиш обнаруживаются как то, чтобы все еще быть нажатым.

Существуют некоторые полуобходные решения:

  • ищите событие выпуска
  • добавить sleep 0.2 перед Вашей командой
  • используйте ярлык с ключом лидера
  • выпустите свои модификаторы ярлыка перед Вашей последовательностью xte

Однако Вы наклоняетесь, получают действия в реальном времени с этим =)

1
ответ дан 23 November 2019 в 02:09

Другие вопросы по тегам:

Похожие вопросы: