1

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

Также есть способ, когда нажатие клавиши переходит к нескольким процессам?

+0

Вы говорите о оконной системе с несколькими приложениями, которые могут быть выбраны или где несколько процессов выполняют операции ввода-вывода в том же терминале [окно]? – user3344003

+0

Это может быть любая система, в которой есть несколько запущенных процессов, которые могут получать символ с клавиатуры. Например, на обычной машине unix, скажем, gvim и shell открыты. Мой вопрос состоял в том, как ядро ​​решает отобразить char, полученный в gvim или shell. –

+0

Вам нужно прочитать о менеджерах окон и X11 – Matt

ответ

1

Я бы предложил прочитать на evdev и X11, evdev - механизм в ядре linux для отправки входных событий (таких как клавиатура). X11 - это оконный менеджер.

В среде с несколькими окнами (т. Е. Нет VT) диспетчер окон (X11) определяет, куда также направляется нажатие клавиши. Что-то вроде xdotool должно быть в состоянии отправить нажатие клавиши на несколько окон одновременно. Wayland планируется заменить X11. Я мало знаю о том, как это работает, но также использует evdev.

1

Это то, что я нашел, прочитав некоторые ресурсы:

Существует нечто, называемое Foreground группы процессов, где среди групп процессов в сеансе самое большее один может быть на переднем плане группы процессов этой сессии. Сигналы ввода tty и tty (генерируемые^C,^Z и т. Д.) Переходят к процессам в этой группе процессов переднего плана.

Смежные вопросы