Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры_AVMiS_УРА_ТАВАРИЩИ! МЫ Добились этого!.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
3.51 Mб
Скачать
  1. Управление работой клавиатуры в текстовом и графическом режимах работы.

Управление работой клавиатуры в текстовом режиме осуществляется драйвером терминала, который входит в состав ядра ОС Linux.

Графический режим управления клавиатуры используется при работе приложениями, которые имеют собственный драйвер клавиатуры (пример система XWindow). Приложение само решает какой код символа выбрать для данного скан-кода при заданном сочетании видов модификаторов.

При каждом нажатии на клавишу контроллер клавиатуры генерирует скан-код представляющий собой последовательность длинной от 1 до 6 байта, которую можно получить чтением порта 0x60.

Основная задача драйвера (системного контроллера) – преобразовать эти скан-коды в соответствующие коды клавиш и далее коды символов. Код клавиши (виртуальный код) иногда говорят просто скан-код занимает размер всегда 1 байт (внутренние однобайтовые значения). Для обычной клавиши внутренний код идентичен чистому скан-коду, а расширенные коды заменяются по каким-то алгоритмам и на втором этапе уже внутренние коды преобразуются по специальной таблице раскладки клавиатуры (их много таких) преобразуются в обычные ASCII-коды.

  1. Режимы работы драйвера клавиатуры: raw, code, xlate, unicode.

Драйвер клавиатуры может работать в одном из 4 режимов:

  1. RAW (K_RAW) – прикладной программе передается последовательность чистых скан кодов (которые сгенерировала клавиатура). Для интерпретации скан-кодов существуют специальные подпрограммы в библиотеке X_LIB они выбирают подходящий символ в соответствии с таблицей символов которую можно поменять с помощью утилиты xmodmap.

  2. CODE ( K_MEDIUMRAW) в скан код клавиши преобразуется 1 из 127 возможных кодов клавиш keycode преобразование осуществляется в соответствии с внутренней таблицей драйвера клавиатуры. Посмотреть эту таблицу можно с помощью команды getkeycodes и так же ее можно изменить при помощи setkeycodes.

  3. XLATE( K_XLATE) – режим код клавиши преобразуется в ASCII-код символа. Команда dumpkeys выводит на экран таблицу действующую в данный момент раскладки клавиатуры. Раскладу можно поменять при помощи команды loadkeys - загружает в драйвер раскладку клавиатуры из указанного файла (sudo loadkeys ./filename).

  4. UNICODE скан коды преобразуются в двухбайтовые коды таблицы UNICODE (она одна и содержит полный набор всевозможных символов) выбор режима осуществляется прикладной программой которая в данный момент выполняется. Узнать или изменить режим работы драйвера можно с помощью команды kbd_mode.

  1. Определение понятий «scan-код» и «ascii-код».

Скан-код — код, присвоенный каждой клавише, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата. При нажатии любой клавиши контроллер клавиатуры распознаёт клавишу и посылает её скан-код в порт 60h.

ASCII (англ. American Standard Code for Information Interchange) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].