Как ядро ​​Linux обрабатывает входы / выходы клавиатуры?

Я не понимаю виртуальные терминальные устройства (например. /dev/tty1 ), но я знаю, что могу «переключиться» на tty1 если я ctrl + alt + f1 .

У меня есть настраиваемая раскладка клавиатуры, которая находится в /usr/share/X11/xkb/symbols/us но она работает только при X.

  • Как заставить Ctrl + Alt действовать как Alt gr в Ubuntu?
  • Клавиатура и мышь не работают в Debian
  • Изолирующая причина увеличения использования ЦП на RHEL 6 против RHEL 5
  • Клавиатура USB игнорирует нажатия клавиш в некотором очень расстраивающемся шаблоне
  • UTF8 математические символы и раскладка клавиатуры / ввод
  • Почему в API-интерфейсах POSIX IPC отсутствуют LSM-крючки?
  • Как виртуальные терминалы, так и X, похоже, управляют вводом / выводом клавиатуры по-своему, но, по-видимому, они как-то взаимодействуют с ядром (Linux), что должно обеспечить некоторую абстракцию для аппаратного обеспечения клавиатуры.

    Как ядро ​​Linux обрабатывает входы / выходы клавиатуры? Есть ли исходный файл, на который я могу посмотреть, со списком всех scancodes / keycodes / keysims / etc. И, возможно, с общей логикой того, как Linux управляет всей идеей «клавиатуры»?

    (Я бегу Lubuntu.)

  • Два компилятора одной и той же версии ядра: одна загружается, одна не может найти корневое устройство
  • Клавиатура / мышь не работают при подключении к USB-концентратору, но только на Fedora - работает на других дистрибутивах
  • Разница между загрузочными и не загружаемыми разделами
  • Что такое среда scsi для Linux
  • Как отличить ввод от разных клавиатур?
  • Ли Linux прекращает обработку, связанную с графическим интерфейсом, когда мы удаляем экран рабочего стола из подключения из шкафа (процессорный блок)?
  • One Solution collect form web for “Как ядро ​​Linux обрабатывает входы / выходы клавиатуры?”

    См. Как работают ввод с клавиатуры и вывод текста? для обзора темы.

    Более подробно, под Linux, ядро ​​получает коды сканирования с аппаратного обеспечения и преобразует их в коды ключей. (Эта терминология не является полностью стандартной, вы можете найти «код сканирования» или «код ключа», используемые для обоих.) Как это преобразование работает, зависит от драйвера клавиатуры. Для клавиатур PS / 2 вы можете настроить его с помощью setkeycodes . Для клавиатур USB вы можете настроить его через udev . См. Также вики Arch . Все устройства ввода данных, включая клавиатуры и мыши, отображаются через устройства событий /dev/input/event* .

    На консоли Linux коды клавиш отображаются в escape-последовательности в соответствии с консольной раскладкой. Поскольку консоль представляет собой текстовый терминал, приложения видят байты с печатными символами, представляющими себя и функциональные клавиши, закодированные с использованием управляющих символов или escape-последовательностей. Вы можете изменить отображение с помощью loadkeys . Отображение использует два уровня косвенности: комбинацию клавиш + модификатор (с тремя модификаторами: shift , control , alt ) до keysym и от keysym до строки (символ или escape-последовательность). Набор keysyms исправлен, поэтому, если вы хотите определить пользовательские комбинации, вам нужно будет использовать существующие ключи, которые иначе не используются, такие как F13 , F14 , …

    Если вы хотите посмотреть исходный код, который реализует эти переводы, посмотрите на драйверы клавиатуры и общий код ввода , а также udev и libudev .

    X11 (GUI) имеет собственный способ сопоставления кодов клавиш с тем, какие приложения получают. Приложения X11 видят ключи и модификаторы, поэтому функциональные клавиши не требуют дальнейшего кодирования. На самом деле есть два способа определить ключевые карты под X: классический метод xmodmap и более новый механизм XKB, который является более мощным, но более сложным.

    Linux и Unix - лучшая ОС в мире.