Чому ці команди xte працюють у терміналі, але не у зв’язку з xbindkeys?


18

Ця 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:

Натисніть кнопку!
e.xbutton.button = 11
e.xbutton.state = 16
"xte" клавіша Super_L '' клавіша W '' клавіша Super_L '"
    m: 0x0 + b: 11 (миша)
отримав екран 0 для вікна 2bb
Запустіть програму з викликом 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 (миша)
отримав екран 0 для вікна 2bb
Запустіть програму з викликом fork + exec

Нічого не відбувається!


1
Ви намагаєтесь натиснути <Супер> <S>? Я знаю, що xbindkeys + xte іноді можуть бути прискіпливими.
Сет

@Seth: Правильно. Будь-який спосіб подолати прискіпливість?
Hubro

1
Спробуйте 'keydown Super_L' 'keydown S' 'keyup S' 'keyup Super_L'.
Сет

@Seth: Без різниці я боюся :(
Hubro

Ви відновили xbindkeys після внесення змін? Іноді це необхідно. Ваша кінцева мета - відкрити огляд робочої області, я думаю?
Сет

Відповіді:


17

Ще одне більш просте рішення: замість того, щоб просто використовувати "b: 11" у визначенні xbindkeys, використовуйте "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, будь ласка, подивіться відповідь вище за оцінкою користувача215129 та позначте її як правильну
David Ljung Madison Stellar

1
@DavidLjungMadison Ні. Це навіть не відповідь на моє запитання, а лише пропозиція для розв’язання.
Хубро

1
Цікаво, чи ти розумієш відповідь. Проблема полягає в тому, що ви намагаєтеся надіслати ключі, поки кнопка все ще не працює. Очікування відпуску кнопки означає, що вона не надсилатиме ключі, поки кнопка не буде відпущена, тим самим вирішивши вашу проблему. Не обхідне рішення, це пояснення питання та спосіб його вирішення.
Девід Люнг Медісон Зоряний

1
Тоді ти ще не розумієш. Проблема в тому , що ви намагаєтеся ввести ключі в той час як кнопка натиснута, і все , що запускає Expo шукає Super-S, а НЕ БТН-2 + Super-S. Виправлення є вирішенням проблеми, оскільки воно не вирішує проблему, гарантуючи, що кнопка ввімкнена, і не працює в багатьох обставинах. Рішення полягає в тому, щоб (як це часто трапляється в роботі з подіями миші) чекати відпускання кнопки перед запуском будь-яких команд, це гарантує, що кнопка не змішується з натисканням клавіші.
David Ljung Madison Stellar

2
Можна підтвердити, що відповідь user215129 дійсно невірна і не відповідає на питання. Проводити власне розслідування цієї проблеми зараз, і в моєму випадку змінити її на випуск або затримати - це не варіант, тому що мені потрібно виконати дію під час натискання кнопки з різними діями при відпуску. Дивіться: askubuntu.com/questions/984054/…
Ethuil UI

2

Я зіткнувся з тією ж проблемою.

"xte 'key b'"

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

"xte 'key Ox62'"

Це працювало для мене



1

У вас є аналогічна проблема під час використання клавіатури sxhkcd. Виявляється, ваші фактичні клавіші швидкого доступу виявляються як і раніше натиснуті.

Є декілька напівсправ:

  • шукайте події випуску
  • додати sleep 0.2перед командою
  • використовувати ярлик за допомогою лідера
  • відпустіть модифікатори ярликів перед послідовністю xte

Однак ви не можете отримати в режимі реального часу дії з цим =)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.