Xbindkeys не будет работать должным образом

У меня есть небольшая проблема. Я хотел переназначить некоторые горячие клавиши, к которым я привык из моей предыдущей системы, но я не могу заставить его работать должным образом с xbindkeys.

xbindkeys распознает комбинацию, но каким-то образом команда не запускается.

Если я использую команду

xdotool key braceleft

Она выводит мне правильный знак { в консоли. Однако, если я использую ту же команду в xbindkeys, ничего не произойдет. Если я заменю команду на firefox, она будет работать правильно и откроет firefox, поэтому, я думаю, xbindkeys сработает.

Я хочу добиться следующего:

Я хочу напечатать символ { в активном окне с помощью Alt_R + 7 или < kbd> 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. все клавиши, а затем нажмите его еще раз. Это, однако, намного, намного лучше, чем отсутствие опции Control + Alt вместо AltGr, но это не так эффективно, как я тоже использовал. Может быть, я тоже найду решение для этого.

9
задан 26 April 2014 в 17:40

5 ответов

Проблема с 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
0
ответ дан 26 April 2014 в 17:40

Когда я попробовал еще несколько вещей, я заметил, что 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, как предназначено, но отпустить все клавиши и затем нажать его снова. Это, однако очень, намного лучше, чем не наличие опции Control+Alt instead of AltGr, но не то, чтобы эффективный, поскольку я использовался также. Возможно, я найду решение для этого также.

0
ответ дан 26 April 2014 в 17:40

Не уверенный, почему это не работает с xbindkeys, я предполагаю, что необходимо определить окно для записи в. Как обходное решение, можно использовать xvkbd вместо этого.

  1. Установка xvkbd

    sudo apt-get install xvkbd
    
  2. Добавляет это к Вашему .xbindkeysrc файл

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

, Который должен работать.

<час>

ПРИМЕЧАНИЯ

По некоторым причинам, на моей машине, xvkbd используют одну из моих вторичных разметок (испанский язык) вместо моего основного одно (американский английский язык), и это заставляет { на самом деле печатать ". Если Вы также имеете эту проблему, просто играете вокруг немного для обнаружения, которому ключ соответствует { с используемым расположением. С другой стороны, можно вырыть глубже и выяснить, откуда xvkbd получает locale настройки.

0
ответ дан 26 April 2014 в 17:40

Как зарегистрировано в подобные вопросы (, Почему эти команды xte работают в терминале, но не при привязке с xbindkeys? ), можно попросить xbindkeys инициировать события на выпуске (на, настраивают):

"xdotool key braceleft"
   Release+Control+Alt + 7

Таким образом, нет никакого конфликта между ключами, используемыми для ярлыка и отправленных.

2
ответ дан 26 April 2014 в 17:40
  • 1
    Добро пожаловать для Выяснения у Ubuntu! Пока это может теоретически ответить на вопрос, это было бы предпочтительно , чтобы включать основные части ответа здесь и предоставить ссылку для ссылки. – Kevin Bowen 9 February 2016 в 15:55

У меня недавно была эта проблема, где я пытался моделировать Игру/Паузу медиа (XF86AudioPlay) ключевое использование Ctrl + G. После некоторого исследования это появилось не, только делают я должен уравновеситься Управление , но также и ключ g (который является тем, чему было нужно эти sleep 0.1 задержка для начала). Если я уравновешиваю оба из этих ключей при помощи keyup в xdotool, а также - clearmodifiers переключатель, он работает. Это - моя новая команда в моем .xbindkeys.rc файле:

"xdotool keyup g key --clearmodifiers XF86AudioPlay"
Control + g
1
ответ дан 7 October 2019 в 23:03

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

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