Введите gedit, используя xdotool в скрипте

У меня была аналогичная проблема, и проблема заключалась в том, что Gnome будет захватывать медиа-ключи до того, как они достигнут VLC, чтобы исправить это, вы можете перейти к разделу «System-> Preferences-> Keyboard Shortcuts»

Там вы будет видеть заголовок с именем sound (развернуть его, если необходимо), и удалить из него комбинации клавиш, которые вы хотите в VLC (вы можете отключить их, нажав на элемент, а затем нажав обратное пространство).

Только проблема с это то, что любые другие приложения, которые используют встроенную обработку Gnome, больше не будут работать с медиа-ключами, если вы не добавите их снова (что, в свою очередь, снова разрывает VLC)

3
задан 27 May 2017 в 15:07

6 ответов

Я смог воссоздать эту проблему. Хотя я не знаю, почему существует разница между read и read -n1, добавив простую задержку до того, как ключ заставил ее работать. Я предполагаю, что не хватает времени после того, как окно переключится на его регистрацию нажатия клавиши.

#!/bin/bash
gedit -s &
GEDPID=$!
sleep 2s
GEDWINID=`xdotool search --pid $GEDPID | tail -1`
echo "press any keys"
read -n1 i
xdotool sleep 0.1 windowactivate --sync $GEDWINID key --clearmodifiers --delay 100 "$i" && wmctrl -a Terminal
1
ответ дан 22 May 2018 в 22:15

Я смог воссоздать эту проблему. Хотя я не знаю, почему существует разница между read и read -n1, добавив простую задержку до того, как ключ заставил ее работать. Я предполагаю, что не хватает времени после того, как окно переключится на его регистрацию нажатия клавиши.

#!/bin/bash gedit -s & GEDPID=$! sleep 2s GEDWINID=`xdotool search --pid $GEDPID | tail -1` echo "press any keys" read -n1 i xdotool sleep 0.1 windowactivate --sync $GEDWINID key --clearmodifiers --delay 100 "$i" && wmctrl -a Terminal
1
ответ дан 18 July 2018 в 12:45

Я смог воссоздать эту проблему. Хотя я не знаю, почему существует разница между read и read -n1, добавив простую задержку до того, как ключ заставил ее работать. Я предполагаю, что не хватает времени после того, как окно переключится на его регистрацию нажатия клавиши.

#!/bin/bash gedit -s & GEDPID=$! sleep 2s GEDWINID=`xdotool search --pid $GEDPID | tail -1` echo "press any keys" read -n1 i xdotool sleep 0.1 windowactivate --sync $GEDWINID key --clearmodifiers --delay 100 "$i" && wmctrl -a Terminal
1
ответ дан 24 July 2018 в 20:01

Я изменил ваш исходный сценарий, чтобы он правильно получил идентификатор окна вашего текущего терминала и переключил фокус между окнами Terminal и Gedit. Этот скрипт использует бесконечный цикл, поэтому все нажатия клавиш, которые печатаются в окне терминала, переносятся в Gedit. Отмените его с помощью Ctrl + C.

#!/bin/bash

WIDGTERM=$(xdotool getactivewindow)
gedit -s 2> /dev/null &
sleep 2s
WIDGEDIT=$(xdotool getactivewindow)
xdotool windowactivate $WIDGTERM
echo "Press any keys"
while true
do
  read -n1 i
  xdotool windowactivate --sync $WIDGEDIT key --clearmodifiers "$i"
  sleep .5
  xdotool windowactivate --sync $WIDGTERM
done
0
ответ дан 22 May 2018 в 22:15
  • 1
    Спасибо за Ваш ответ. Но это не работает (персонажи не переносятся один за другим / ничего не передавалось) Я думаю, что это из-за read -n1 i. Что вы думаете? – Ali Razmdideh 29 May 2017 в 13:55
  • 2
    @ali Это странно. Протестировано на двух системах - Precise 32-bit и Xenial 64-bit - все работает отлично. Когда символ печатается в терминале, окно переключается на Gedit, там печатается символ, а затем фокус переключается обратно на терминал. Вы наблюдаете переключение окон при вводе символов в терминале? Попробуйте увеличить задержку между переключением (используйте 1s вместо .5 в команде sleep в цикле). – whtyger 29 May 2017 в 14:29
  • 3
    Да, окна переключаются между терминалом и Gedit, но символ не печатается! – Ali Razmdideh 29 May 2017 в 14:39
  • 4
    Я использую 1s вместо .5, и тот же результат произошел, и любой символ был напечатан. но когда я использую read i вместо read -n1 i, он работает хорошо! – Ali Razmdideh 29 May 2017 в 14:44
  • 5
    @ali read i ждет бесконечно, пока вы не нажмете " Enter " а затем помещает все печатные символы в переменную $i. read -n1 i ожидает только один символ и автоматически помещает его в переменную $i. Если вы используете -n3, он будет ждать 3 символа и так далее. В этом разница между вызовами read. Проверьте help read, все параметры можно найти там. – whtyger 29 May 2017 в 15:05

Я изменил ваш исходный сценарий, чтобы он правильно получил идентификатор окна вашего текущего терминала и переключил фокус между окнами Terminal и Gedit. Этот скрипт использует бесконечный цикл, поэтому все нажатия клавиш, которые печатаются в окне терминала, переносятся в Gedit. Отмените его с помощью Ctrl + C.

#!/bin/bash WIDGTERM=$(xdotool getactivewindow) gedit -s 2> /dev/null & sleep 2s WIDGEDIT=$(xdotool getactivewindow) xdotool windowactivate $WIDGTERM echo "Press any keys" while true do read -n1 i xdotool windowactivate --sync $WIDGEDIT key --clearmodifiers "$i" sleep .5 xdotool windowactivate --sync $WIDGTERM done
0
ответ дан 18 July 2018 в 12:45

Я изменил ваш исходный сценарий, чтобы он правильно получил идентификатор окна вашего текущего терминала и переключил фокус между окнами Terminal и Gedit. Этот скрипт использует бесконечный цикл, поэтому все нажатия клавиш, которые печатаются в окне терминала, переносятся в Gedit. Отмените его с помощью Ctrl + C.

#!/bin/bash WIDGTERM=$(xdotool getactivewindow) gedit -s 2> /dev/null & sleep 2s WIDGEDIT=$(xdotool getactivewindow) xdotool windowactivate $WIDGTERM echo "Press any keys" while true do read -n1 i xdotool windowactivate --sync $WIDGEDIT key --clearmodifiers "$i" sleep .5 xdotool windowactivate --sync $WIDGTERM done
0
ответ дан 24 July 2018 в 20:01
  • 1
    Спасибо за Ваш ответ. Но это не работает (персонажи не переносятся один за другим / ничего не передавалось) Я думаю, что это из-за read -n1 i. Что вы думаете? – Ali Razmdideh 29 May 2017 в 13:55
  • 2
    @ali Это странно. Протестировано на двух системах - Precise 32-bit и Xenial 64-bit - все работает отлично. Когда символ печатается в терминале, окно переключается на Gedit, там печатается символ, а затем фокус переключается обратно на терминал. Вы наблюдаете переключение окон при вводе символов в терминале? Попробуйте увеличить задержку между переключением (используйте 1s вместо .5 в команде sleep в цикле). – whtyger 29 May 2017 в 14:29
  • 3
    Да, окна переключаются между терминалом и Gedit, но символ не печатается! – Ali Razmdideh 29 May 2017 в 14:39
  • 4
    Я использую 1s вместо .5, и тот же результат произошел, и любой символ был напечатан. но когда я использую read i вместо read -n1 i, он работает хорошо! – Ali Razmdideh 29 May 2017 в 14:44
  • 5
    @ali read i ждет бесконечно, пока вы не нажмете & quot; Enter & quot; а затем помещает все печатные символы в переменную $i. read -n1 i ожидает только один символ и автоматически помещает его в переменную $i. Если вы используете -n3, он будет ждать 3 символа и так далее. В этом разница между вызовами read. Проверьте help read, все параметры можно найти там. – whtyger 29 May 2017 в 15:05

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

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