Захват управления клавиатурой в сценарии оболочки

У меня есть определенный скрипт shell (zsh), который читает по одному символу за раз и после этого выполняет действие. В оболочке это реализуется посредством «read -k» в цикле. Я хочу выполнить скрипт как комбинацию клавиш, не открывая оболочку.

Каков самый простой способ захватить клавиатуру для этого? Я мог бы использовать dmenu, если бы захотел прочитать целую строку, но сценарий должен иметь возможность анализировать символы по одному.

Благодарю.

2 Solutions collect form web for “Захват управления клавиатурой в сценарии оболочки”

(попытался опубликовать комментарий, но я получаю сообщение об ошибке – попробую ответить)

Когда вы говорите «выполнить из ярлыка» «без открытия оболочки», вы говорите в графической среде (X11), не открывая окно эмулятора терминала?

Команда командной оболочки считывает символы с символа «стандартный вход», не обязательно на клавиатуре.

Терминальный эмулятор получает в своем окне события клавиатуры X11 и отображает поток символов (который обычно начинается как стандартный ввод).

Если вы хотите использовать read но не эмулятор терминала, вам понадобится что-то еще, чтобы сопоставить события нажатия клавиш X11 в окне символа. (возможно, «корневое окно»)

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

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

Вещь для запуска будет эмулятором терминала с zsh, запускающим ваш скрипт, который непосредственно read -k . Таким образом, вам не нужно запускать терминал самостоятельно. Обратите внимание, что вы можете указать, что терминал подходит для любого размера (например, небольшой).

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

  • Как изменить высоту GIMP до 1266 пикселей?
  • Linux ssh запускает графическое приложение и оставляет его запущенным?
  • удаленный дисплей X не открывается
  • Debian: очень низкое разрешение и проблема с неизвестным монитором
  • log remote X session из ssh (PuTTY)
  • Неверное событие в x11
  • Отдайте все в двух цветах
  • переключение окон в twm с помощью сочетаний клавиш
  • Настройка двойного монитора в Linux Mint 17.2 Rafaela
  • Как программно переименовать виртуальный рабочий стол в Cinnamon
  • Установить диспетчер окон по умолчанию (i3) в OpenSuse
  • Что такое .serverauth. ##### файлы в моем домашнем каталоге?
  • Interesting Posts

    Как исправить ошибку сообщения Ошибка несоответствия суммы хеша

    Индикатор изменения макета клавиатуры

    «Make» останавливается при установке tty0tty (эмулятор нуль-модема)

    Как прочитать файл с помощью sudo?

    Создайте tar-архив, разбитый на блоки максимального размера

    Как я могу создать логин SSH, который делегирует telnet надежно

    Доступ к Google-трансляции через wget

    Как искать файлы по каталогу и имени файла combo pattern

    Как выбрать несколько строк из одного входа и сохранить их в разные файлы одновременно?

    Большинство установленных пакетов, устаревших в aptitude, обновления не найдены

    Пересылка Postfix почты на основе regexp

    В bash я должен спросить каждую строку из первого файла csv, второго файла csv и ответов, помещенных в третий файл csv

    ошибка связи, используемый адрес: невозможно использовать порт TCP для источника и адресата?

    rsync: ошибка запуска протокола клиент-сервер

    Настольная среда Gnome перестала работать в kali linux (на основе debian)

    Linux и Unix - лучшая ОС в мире.