Назад | Перейти на главную страницу

Как заставить сценарий оболочки производить эквивалент нажатия клавиши?

Я хочу написать сценарий оболочки, который будет делать то же, что и записанный макрос, и воспроизводить нажатия клавиш. В частности, для производства ctrl+а.

Это возможно?

Я пробовал такие вещи, как echo \0141, но он просто говорит, что нет command \0141.

Вы пробовали Expect?

В X11 вы можете использовать xdotool.

xdotool key ctrl+a

Когда приложение запущено, оно часто сбрасывает характеристики терминала, так что нажатие ctrl-a может быть записано как ASCII 1. Или как серию нажатий клавиш.

В консоли ctrl-v ctrl-a вызывает отображение ^ A, и вы получаете

 echo ^A | od -x
0000000 010a

где 01 - ctrl-a.

Итак, суть в следующем:

для того, чтобы что-то «записать», вы должны захватить настройки терминала, запомнить их, а затем сбросить их во время воспроизведения. В сценарии оболочки это означает анализ вывода

stty -a

и сохраняя его в формате, который позволяет вам отправить его обратно в stty во время воспроизведения, а затем отправить поток данных на терминал.

Это сильно усложняется драйверами терминалов, графическими интерфейсами и т. Д.

Чтобы получить "чистый" ctrl-a, используйте ctrl-v ctrl-a - только в консоли, не обязательно внутри редактора.

Со страницы документации, которую я сделал недавно

Серж довольно устал от стандартных шагов веб-разработки:

  1. Сохранить файл
  2. Переключитесь в браузер (любой ярлык .. обычно alt + tab)
  3. Обновить страницу
  4. Посмотрите, в порядке ли страница
  5. Вернуться в редактор

Поэтому он решил немного автоматизировать;)

Как он поправил ситуацию:

  1. Установить xdotool

$ sudo apt-get install xdotool

  1. Создать скрипт xdotool
$ mkdir Documents/scripts
$ vim Documents/scripts/vim-browser-vim.sh
[...]
#!/bin/bash

# Seach for a window having "Coding" in its title and send keys to save current document in vim
xdotool search "Coding" key "Escape" "colon" "w" "Return"

# Search for a window having "Studyladder" in its title, activate it and refresh (In chrome it's Ctrl+r) 
xdotool search "Studyladder" windowactivate key "Ctrl+r"

# Seach for a window having "Coding" in its title and activate it
xdotool search "Coding" windowactivate
[...]
chmod u+x  Documents/scripts/vim-browser-vim.sh
  1. Подключить скрипт к ярлыку

В GNOME: Панель задач> Система> Настройки> Сочетания клавиш> Добавить

Имя: vim-browser-vim Команда: /home/srivest/Documents/scripts/vim-browser-vim.sh

Затем примените.

Затем назначьте сочетание клавиш по вашему выбору. Я использовал Ctrl + 2, просто чувствую, что палец ленивый и нужно потренироваться;)

Щелкните Закрыть.

  1. Измените имя вашей консоли на «Coding», чтобы сценарий xdotool мог ее найти.

Теперь вы можете запустить скрипт, нажав на ярлык!

Жизнь меняется! хе-хе ..

-

Исправление проблем:

Если скрипт не работает, то вам нужно искать:

  1. Установлен xdotool
  2. Исполняемый файл сценария
  3. Все ли окна присутствуют, соответствует ли их строка заголовка поисковой строке в скрипте. Например, в этом примере я ищу учебу. Если вкладка браузера не открыта на странице Studyladder, заголовок вверху не будет содержать studyladder, и окно не будет найдено.
  4. Множество окон с одинаковыми именами ... избегать. Вы можете изучить стеки xdotool, если вам так не терпится.
  5. Путь к сценарию в ярлыке GNOME правильный.

PS: НЕ ПЫТАЙТЕСЬ СОЗДАТЬ ALT + TAB И ДРУГИЕ КОМБО КЛАВИШИ НА РАБОЧЕМ СТОЛЕ. Это действительно будет работать в консоли, но не при запуске системой ярлыков gnome. Я предполагаю, что этот код ярлыка запускает скрипт в его собственной песочнице и генерация таких вещей, как Alt + Tab для переключения приложения, не будет работать, поскольку в этой песочнице нет приложений. Часы потрачены впустую, пытаясь заставить это работать.