как сочетание клавиш дано корректной программе?

От раздела Filename Expansion GNU колотят ссылку:

Когда шаблон используется для расширения имени файла, символ '.' в начале имени файла или сразу после наклонной черты должен быть подобран явно, если опция оболочки dotglob не установлена. При соответствии имени файла символ наклонной черты должен всегда подбираться явно. В других случаях '.' символ не рассматривают особенно.

Это документируется (и ожидается), поведение во всех оболочках POSIX, посмотрите Шаблоны, Используемые для Расширения Имени файла:

Если имя файла начнется с периода ('.'), то период должен быть явно подобран при помощи периода как первый символ шаблона или сразу после символа наклонной черты. Ведущий период не должен быть подобран:

  • Звездочка или специальные символы вопросительного знака

  • Выражение скобки, содержащее список несоответствия, такой как" [! a]", выражение диапазона, такой как" [%-0]", или выражение класса символов, такой как" [[: punct:]]"

Это является неуказанным, может ли явный период в списке соответствия выражения скобки, такой как" [.abc]", соответствовать ведущему периоду в имени файла.

4
14.01.2015, 01:13
2 ответа

иногда/dev/tty может использоваться для этого...

ls /bin /usr/bin | sort | uniq | tee /dev/tty | grep out | wc
-121--44544-

Эта команда сработала на меня.

ls /bin /usr/bin | sort | uniq | tee /dev/pts/0 | grep out

Можно проверить, что является терминалом, с помощью команды tty и заменить тройник для перенаправления вывода на этот терминал.

Ссылки

https://stackoverflow.com/a/18025293/1742825

-121--44546-

Какая часть Linux обрабатывает и разрешает эти ярлыки?

По большей части, отдельные приложения или диспетчер окон (WM )/среда рабочего стола (DE). Существует несколько пойманных и обработанных ядром, таких как переключение VT с Cntl-Alt-F [N].

Фактическое событие распространяется:

  • От ядра
  • К серверу Xorg
  • К WM/DE
  • К приложению

Если оно будет поймано и обработано в любой точке, оно, вероятно, не будет продолжаться до следующего уровня вниз.

Если вы запускаете приложение (не GUI) внутри терминала GUI, терминал GUI будет иметь приоритет над ним.

Что делать, если несколько программ/процессов используют один и тот же ярлык, как разрешить приоритет?

WM/DE будет иметь приоритет над приложением.

4
27.01.2020, 20:49

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

Теперь посмотрим, что происходит при нажатии клавиши. Нажатие и отпускание клавиш рассматриваются отдельно, хотя библиотека может решить вопрос об их объединении для программиста. Драйвер клавиатуры обрабатывает некоторые вещи, например, обращение с клавишей Shift как с модификатором, а не как с дискретной клавишей. Сам драйвер может перехватывать некоторые комбинации клавиш для собственного использования или бросать их в программу.

Какая программа получит его? Программы с окнами, как правило, получают уведомления о нажатиях клавиш только при наличии фокуса ввода. Программа также может "захватывать" определенные клавиши для своего собственного использования. Alt+Tab захватывается Unity, отрицая, что какая-либо другая программа его видит. Ctrl+T захватывается системой меню Firefox, но только в том случае, если окно Firefox с меню, которое хочет о нем узнать, имеет фокус ввода.

Так кто же определяет, кто что получит? Кроме фокуса ввода, как я уже упоминал, он часто попадает первым, первым. Alt+Tab захватывается Unity (и многими другими оконными менеджерами), поэтому пользовательская программа редко может его убрать. Конечный пользователь находится во власти используемых программ; если такая программа, как vim, позволяет настраивать определенные комбинации клавиш для различных вещей, то вы можете идти, пока программа получает нажатие клавиши.

4
27.01.2020, 20:49

Теги

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