настраиваемая горячая клавиша для команды терминала

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

Как мне это сделать?

3
задан 15 November 2017 в 16:48

1 ответ

1118] Хорошо, ответ, который у меня есть и который работает почти так, как требуется, на самом деле удивительно сложен. Вы будете использовать xmacro для записи и воспроизведения нажатий клавиш.

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

    sudo apt-get install xmacro
    
  2. Записать макрос

    xmacrorec2 > test.macro
    

    Теперь нажмите ESC (чтобы нажмите клавишу «abort» для записи), введите любой текст, который вы хотите назначить, и снова нажмите ESC , чтобы остановить запись. Записанный макрос теперь находится в файле test.macro; Вы можете редактировать его с помощью текстового редактора.

  3. Проверка работоспособности макроса

    cat test.macro | xmacroplay -d 0 $DISPLAY
    
  4. (необязательно, рекомендуется) Создайте сценарий с помощью приведенных выше команд. Сохраните его как macro.sh:

    #!/bin/bash
    
    cat test.macro | xmacroplay -d 0 $DISPLAY > /dev/null 2>/dev/null
    

    Сделайте его исполняемым:

    chmod a+x macro.sh
    
  5. Осталась небольшая проблема. xmacro воспроизводит точные нажатия клавиш, но если вы определите комбинацию клавиш и запустите скрипт из комбинации клавиш, клавиши будут воспроизведены до того, как вы отпустите комбинацию клавиш, как если бы вы начали печатать без отпускания клавиши. Вам необходимо добавить следующую строку к файлу test.macro:

    KeyStrRelease F1
    

    , который будет имитировать отпускание клавиши F1.

  6. Используя настройки клавиатуры (вы можете получить к ним доступ через настройки или набрав `gnome-control-center keyboard), создайте новый ярлык в разделе" Пользовательские ярлыки "и назначьте ему F1.

Хорошо, но есть еще одно предупреждение: ярлык F1 теперь будет работать в в каждом приложении , а не только в терминале. Я не знаю, как это решить; возможно, в macro.sh нужно было бы сначала проверить, какое окно имеет фокус, и проверить, является ли идентификатор этого окна терминальным.

0
ответ дан 15 November 2017 в 16:48

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

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