Посмотрите на это в слоях. Во-первых, это аппаратное обеспечение, и драйвер устройства в ядре Linux будет иметь специальные методы для управления клавиатурой и реагирования на нее через регистры состояния в устройстве и обработчики прерываний, например.
Следующим является ядро Linux, которое будет иметь некоторый метод загрузки соответствующего драйвера для каждого компонента оборудования, обнаруженного во время загрузки. После загрузки драйвер устройства соответствует некоторому интерфейсу драйвера ядра, предоставляя данные с устройства в ядро и наоборот.
За пределами ядра на определенном уровне драйвер устройства и оборудование видны, как правило, в виде списка в каталоге / dev. Программное обеспечение, такое как эмулятор терминала, которому необходимо использовать устройство, получит доступ к устройству через запись в /dev.
.
Связь между приложением пользовательского уровня и устройством теперь осуществляется с помощью ряда операций чтения / записи и операций ioctl. Они попадают в ядро (некоторые детали см. На страницах руководства), после чего ядро связывается с драйвером устройства, загруженным выше.
Эмулятор терминала будет отображать символы по мере их ввода (в большинстве случаев) и по мере их получения от устройства (в большинстве случаев) с использованием доступных ему шрифтов, расположенных в разных местах в зависимости от приложения. (Я говорю здесь в общих чертах, потому что я не знаю Gnome конкретно).
Помогает ли это?