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

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

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

Как виртуальные терминалы, так и X, похоже, управляют вводом / выводом клавиатуры по-своему, но, по-видимому, они как-то взаимодействуют с ядром (Linux), что должно обеспечить некоторую абстракцию для аппаратного обеспечения клавиатуры.

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

(Я бегу Lubuntu.)

  • empty modules.dep для новой компиляции ядра
  • Есть ли способ идентифицировать путь приложения для процесса, который пытается получить доступ к Интернету в дистрибутиве Linux?
  • Неправильный eUID в `/ proc / PID / status`, когда используется SETUID
  • Блок «Оверлей дерева устройств» уведомляет и загружает детей дважды
  • Как найти конкретный патч для файла ядра
  • Переменные области планировщика Pthread?
  • Взаимодействие BlueZ без HCI?
  • Поддерживает ли виртуальный мост Linux VLAN?
  • 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, который является более мощным, но более сложным.

    Interesting Posts

    Звуковой сигнал командной строки для одновременного воспроизведения и записи

    Несколько экранов на одном физическом мониторе

    Что такое «s» внутри «$ -»?

    Ошибка обновления Fedora 26

    Удалить последний символ строки, используя строковое манипулирование в сценарии оболочки

    $ PWD переменный эквивалент pwd -P

    Как восстановить несколько файлов, которые были перемещены в один?

    понимание lsof во время длительной операции над большим файлом

    Передайте 'напечатанный текст' из интерактивной оболочки bash в команду

    Как пропустить подкаталоги в цикле for, основанном только на имени?

    ext4: Может ли чистая файловая система нуждаться в восстановлении журнала?

    Извлекать / безопасно удалять vs umount

    Как я могу определить, какой словарь kate / KDE используется для проверки орфографии?

    что мне не хватает … зачем запускать платформу S / 390 с рабочим столом Fedora?

    Как распечатать список vim для файла в формате ?

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