Какова метаклавиша удара?

Существует два включенные шага. Каждого обычно называют "фоновой обработкой" и другим "отрицанием".

  • Вы запускаете фоновое задание путем добавления амперсанда & после команды. Это отправляет задание в фон и позволяет Вашей оболочке продолжать работать. Команда Вы фон все еще работает как дочерний процесс оболочки. Вы видите его в списке заданий оболочки bu выполнение jobs. Вы могли работать fg (или fb %N если у Вас есть больше чем одно фоновое задание) принести его к переднему плану и отправить ему вещи как CtrlC.
  • Вы отрицаете задание путем выполнения disown %N где N является числом задания. Если бы у Вас только есть одно фоновое задание, это было бы disown %1. Это вышибает фоновое задание "из вложенного множества" так, чтобы это больше не был ребенок оболочки. Можно затем закрыть оболочку, и отрицаемая программа продолжала бы бежать.

Примечание: В ZSH Вы можете ярлык процесс отрицания путем выполнения command &!. &! фоны и отрицают за один шаг.

16
14.01.2012, 03:28
3 ответа

Отображение от клавиш на клавиатуре до модификаторов как Meta и Control обрабатывается X-сервером (т.е. часть низкого уровня GUI). Этим отображением можно управлять через старого стиля xmodmap команда или модернизированный интерфейс XKB, или через GUI инструменты конфигурирования, который использует один из них под капотом.

По умолчанию, на большинстве установок, Meta ключ является ключом, маркировал Alt. Это вызвано тем, что исторически, много рабочих станций Unix имели ключ, маркировал Meta, где ПК имеют ключ, маркировал Alt. Таким образом, если у Вас есть привязка для M-C-y, нажмите Ctrl+Alt+Y.

Для проверки, какова текущая привязка запустите xev программа в терминале. С xev сфокусированным окном нажмите клавиши; Вы будете видеть расшифровку стенограммы сгенерированных событий в терминале.

Коммуникация между эмуляторами терминала (или оконечные устройства, соответствующие медосмотру терминалы) и приложения, использует символы. При нажатии A терминал получает информацию “A ключ, никакой модификатор”, но что это отправляет в приложение, работающее в терминале, является символом a. При нажатии функциональной клавиши как или F1 нет никакого соответствующего символа; терминал отправляет последовательность символов, начинающуюся с символа ESC (байт 27, иногда записанный \e или ^[). Когда эмулятор терминала, такой как xterm получил событие нажатия клавиши с Meta модификатор, это переводит тот ключ к символу ESC, сопровождаемому базовой функцией ключа, например. \ea (Escape, нижний регистр a), когда Вы нажимаете Meta+A.

Каково точное различие между 'терминалом', 'оболочкой', 'tty' и 'консолью'? может быть полезный фон.

11
27.01.2020, 19:48

Ключевое событие сгенерировано X-сервером (как настроено xmodmap), и отправляется в Ваши X приложений. Ваш менеджер окон мог прервать это, прежде чем он будет отправлен в xterm. XTerm, в свою очередь, переводит событие в некоторые байты и отправляет байты в pseudo-tty, выделенный Вашей оболочкой, ударом.

Обратите внимание на то, что не все события переводятся непосредственно в байты XTerm. Например, Ctrl и клавиши Shift, собой, генерируют X событий клавиатуры, но XTerm ничего не отправляет в оболочку (или другое приложение) работающий в нем. Это также включает Метаклавишу отдельно, но не Клавишу меню. Однако событие, сгенерированное путем нажатия Meta-e, заставит XTerm отправить или байт 0xE5 или двухбайтовый 0x1B 0x65 последовательности, в зависимости от XTerm. Установка ресурса VT100.metaSendsEscape.

5
27.01.2020, 19:48

Метаключ Bash изначально был определен следующим образом ( lib / readline / ChangeLog ):

Mon Jul 13 11:34:07 1992  Brian Fox  (bfox@cubit)
        * readline.c: (rl_variable_bind) New variable "meta-flag" if "on"
        means force the use of the 8th bit as Meta bit.  Internal variable
        is called meta_flag.

Так оно и было интерпретировано с помощью ncurses и xterm . несколько терминалов, предусмотренных для того, чтобы сделать эту функцию необязательной (этот аспект не был широко распространен. Большинство терминалов, с которыми вы столкнетесь, используют жестко запрограммированное поведение (и не очень интересно). Страница руководства terminfo эти возможности терминала:

   has_meta_key              km     km   Has a meta key
                                         (i.e., sets 8th-bit)
   meta_off                  rmm    mo   turn off meta mode
   meta_on                   smm    mm   turn on meta mode
                                         (8th-bit on)

и объясняет функцию:

Если терминал имеет «мета-ключ», который действует как клавиша сдвига , устанавливая 8-й бит любого передаваемого символа, этот факт может быть обозначен как km . В противном случае программное обеспечение будет считать, что 8-й бит является четностью, и обычно очищается. режим "включен и выключен, они могут быть заданы как smm и rmm .

Другая функция, добавление префикса к escape-символу в ответ на Клавиша Alt была включена в некоторые эмуляторы терминала. Bash (фактически библиотека readline ) документирует это использование в своем журнале изменений с 2004 года:

lib/readline/callback.c            
        - use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
          simulate the recursion used to decode multicharacter key sequences
          (even things like ESC- as meta-prefix

Meta является частным случаем клавиши-модификатора . Подобно control и shift , вы нажимаете его одновременно с другой клавишей и ожидаете увидеть что-то отличное от нажатия самой клавиши. X предоставляет ключи-модификаторы, присваивая бит в значении модификатора, передаваемом в событии X для ключа.Нажатие клавиш может быть несколькими X-событиями; X предоставляет функции для объединения этих событий с сохранением модификаторов.

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

Но «мета» - это особый случай.

X-приложения не имеют мета-ключа , кроме как по соглашению. X не имеет определения для мета-ключа или мета-модификатора. Обычно терминалы ищут клавишу Alt и / или один из модификаторов, известных для xmodmap , например, mod2 . Более поздняя функция xkb усложняет ситуацию (но не дает улучшений по сравнению с этим обсуждением), предоставляя еще один уровень информации для поиска клавиши Alt .

Соглашение, конечно, может завести вас только так далеко, учитывая, что ни xmodmap , ни xkb не знают ничего конкретного о meta . xterm, например, настраивается, и не все пользователи хотят настраивать meta одинаково. Например, Alt может не быть предполагаемым мета-ключом, например, если он используется в ресурсе перевода . Другой ключ может быть мета-ключом, но пользователи (особенно те, которые используют escape-последовательности в bash) могут захотеть, чтобы escape-символ отправлялся, когда они нажимают Alt . Но имейте в виду, что если он не настроен как модификатор , ничего из этого не произойдет: xterm не объединяет события отдельно.

xterm имеет несколько настроек ресурсов (задокументированных на странице руководства ):

  • altIsNotMeta и altSendsEscape (добавлено в 2007 ).
  • 8BitInput с 2006 г. соответствует исходному значению мета-режима, и для этого определена управляющая последовательность, которая обеспечивает smm и rmm ] (установить / удалить мета-режим) возможности терминала.
  • 8BitInput был изменен в 2003 для учета UTF-8 путем сдвига декодированных значений Unicode на 128, а не необработанных входных байтов.
  • metaSendsEscape датируется 1999 г.
  • 8BitInput намного старше, чем metaSendsEscape . Это реализовало выбор между мета режимом (добавление восьмого бита) или префиксом ключа с помощью escape с X11R4 (1989). Но функция была определена при запуске: она проверялась во время инициализации, чтобы определить, был ли вход установлен на разрешение 8 бит или только 7. После этого он не менялся.

Некоторые люди приравнивают два ( 8-битный и escape-префикс), ссылаясь на последний как на мета режим. В зависимости от вашей точки зрения, параметр ресурса 8BitInput xterm является частью решения для получения работоспособного метаключа.

Дополнительная литература:

2
27.01.2020, 19:48

Теги

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