Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Пользователю -> Костромин В.А. -> "Самоучитель Linux для пользователя" -> 113

Самоучитель Linux для пользователя - Костромин В.А.

Костромин В.А. Самоучитель Linux для пользователя — СПб.: БХВ Петербург, 2003. — 672 c.
ISBN 5-94157-183-6
Скачать (прямая ссылка): samouchiteldlyapolz2003.djvu
Предыдущая << 1 .. 107 108 109 110 111 112 < 113 > 114 115 116 117 118 119 .. 274 >> Следующая


9.3.3. Ввод символов с клавиатуры

В процессе ввода символов с клавиатуры можно выделить четыре соответствия или отображения (в математическом смысле этого слова).

1- На клавиатуру нанесены (или наклеены) символы. Это первое соответствие: символ -> клавиша.

2. Микропроцессор клавиатуры реализует второе соответствие: комбинация клавиш —> скан-код.

3. Далее скан-код клавиатуры преобразуется в код символа, понятный приложению, например, ASCII-код или UNICODE; это третье соответствие: скан-код —> код символа, используемый приложением. Гпава 9. Подключение и настройка аппаратных устройств.

.265

4. Для изображения символа на экране или принтере используется четвертое соответствие: ASCII-код —> изображение символа.

О наличии этих соответствий полезно помнить при рассмотрении вопросов взаимодействия пользователя с приложениями. А теперь вернемся к вопросу о том, как работает клавиатура.

Управление работой клавиатуры в текстовом режиме осуществляется драйвером терминала, который входит в состав ядра Linux. Драйвер терминала состоит как бы из двух отдельных драйверов: драйвера клавиатуры и драйвера экрана. Драйвер клавиатуры обрабатывает нажатия клавиш пользователем и передает результат прикладной программе, которая, в свою очередь, посылает экранному драйверу символы, которые должны быть отображены на экране.

При каждом нажатии на клавишу микропроцессор клавиатуры генерирует последовательность так называемых скан-кодов, которая представляет собой последовательность из двух или большего числа байтов. Эта последовательность передается драйверу клавиатуры, который может работать в одном из 4 режимов:

П K_RAW, когда прикладной программе передается последовательность скан-кодов, сгенерированных клавиатурой. Этот режим используется при работе с приложениями, которые имеют собственный драйвер клавиатуры. Примером такого приложения является система X Window.

П K_MEDILiJVlRAW, когда скан-код клавиши преобразуется в один из 127 возможных кодов, называемых кодами клавиш (kcycodcs). Каждый код клавиши состоит из кода нажатия клавиши и кода отпускания клавиши. Преобразование скан-кодов в коды клавиш осуществляется в соответствии с внутренней таблицей драйвера клавиатуры. Обычно эта таблица фиксирована, и изменять ее не требуется, хотя в системе существуют команды getkeycodes И setkeycodes, С ПОМОЩЬЮ которых МОЖНО просмотреть ИЛИ изменить некоторые соответствия в этой таблице. Эти команды используются только в том случае, если у вас программируемая клавиатура.

П K_XLATE (или режим ASCII), когда код клавиши преобразуется в ASCII-код символа или некоторую последовательность ASCII-кодов символов в соответствии с таблицей раскладки клавиатуры, которая хранится в виде отдельного файла. Например, для Red Hat Linux 5.2 по умолчанию используется файл defkeymap.map в каталоге /usiyiiiykbd/keymaps/i386/qwerty Команда dvmpkeys выводит на экран содержание действующей в данный момент таблицы раскладки клавиатуры, а команда Ioadkeys загружает в драйвер таблицу раскладки клавиатуры из указанного файла.

О KUNICODE, когда скан-коды преобразуются в двухбайтовые коды таблицы UNICODE (этот режим пока используется очень редко). 266_

і Самоучитель Linux для пользователя

Выбор режима работы драйвера терминала определяется прикладной программой, которая в данный момент времени выполняется компьютером. Чаще всего используется третий режим, когда код клавиши либо преобразуется в ASCII-код символа или строку таких кодов в соответствии с таблицей раскладки клавиатуры, либо выполняется действие, определенное для конкретной комбинации клавиш в таблице раскладки клавиатуры. Например, нажатие <Ctrl>+<Alt>+<Del> эквивалентно вызову команды shutdown -г о, т. е. приводит к останову системы и перезагрузке компьютера.

Режим работы драйвера клавиатуры можно узнать или изменить с помощью команды kbd mode. Однако не торопитесь менять режим, т. к. перевод драйвера клавиатуры в режим RAW или MEDIUMRAW может сделать его недоступным для большинства приложений, т. е. легко можно вообще потерять возможность ввода команд.

Не для всех клавиш и комбинаций клавиш процесс обработки проходит так прямолинейно, как это описано выше. Во-первых, имеется несколько особых клавиш, так называемых клавиш-переключателей. Это клавиши <Shift> (левая и правая). <Alt> (левая и правая). <Ctrl> (левая и правая). <Caps LockX <Num Lock>, <Ins>. Нажатие на клавишу-переключатель изменяет значение одного из разрядов (битов) в двухбайтном слове, которое хранит состояние клавиш-переключателей. Поэтому драйвер клавиатуры вначале должен проанализировать состояние этого слова, а затем, соответственно, преобразовать коды.

Клавиша <Ins> является единственной из клавиш-переключателей, нажатие которой не только заносит признак в слово состояния переключателей, но и порождает передачу соответствующего кода драйверу терминала.

С помощью ASCII-кодов можно представить 256 различных символов, а, значит, ASCII-коды можно сопоставить 256-ти кодам клавиш. Учитывая наличие клавиш-переключателей, комбинаций клавиш существует гораздо больше. Поэтому некоторые комбинации клавиш драйвер клавиатуры преобразует в цепочки из нескольких байтов, так называемые Escape-последо-вательности, в которых два первых байта служат признаком Escape-последовательности. а последующие представляют собой собственно значащие байты. Escape-последовательности обычно представляют те комбинации клавиш, которые используются для управления работой программ, таких как стрелки, клавиши <Page Down>, <Page Up>, <Home>, <End>, <F1>— <F12>, <Ins>, <Del> и т. д.
Предыдущая << 1 .. 107 108 109 110 111 112 < 113 > 114 115 116 117 118 119 .. 274 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100