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

 

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

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

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


.269

press any key (program terminates after IOs of last keypress) . . .

keyccde 125 press

keycod" 125 release

keycode 126 press

keycode 126 release

keycode 127 press

keycode 127 release

Числа 125, 126, 127 и есть коды этих клавиш. Далее переходим в каталог /usr/lih/kbd/keytaHes/i386/qwerty, находим файл, который используется в данный момент (что-то типа rul.map, если в каталоге /usr/lib/kbd/keytaUes/i386/qwerty вы найдете только rul.map.gz, то выполните предварительно разархивацию: gunzip rui.map.gz/

Для того чтобы заставить клавишу работать как временный переключатель с русского на латинский (пока клавиша удерживается), надо придать ей значение AltGr, а чтобы она использовалась как постоянный переключатель -AltGr_Lock. Находим внутри rul.map:

keycode 125 = keycode 126 = keycode 127 =

и меняем на:

keycode 125 = keycode 126 AltGr keycode 127 = AltGr_Lock

Далее надо изменить установки тех клавиш, которые ранее использовались для переключения. Например, если в качестве постоянного переключателя использовалась клавиша <Ctrl> (код клавиши 97), находим строку

keycode 97 = и вписываем:

keycode 97 = Control

В итоге получаем: клавиша, расположенная возле правой клавиши <Ctrl>, — фиксированный переключатель "рус/лат", а та, что рядом с правой клавишей <Alt> — временный переключатель "рус/лат" (то есть действующий только на то время, пока удерживается в нажатом положении соответствующая клавиша).

После редактирования сохраняем файл под новым именем (например, mymap.kmap) и записываем это имя в /etc/syscc nfig/keyhoard. 270_

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

9.3.6. Работа с клавиатурой вграфическом режиме

В графическом режиме работа с клавиатурой организована значительно сложнее. Подробное описание этого вопроса можно найти в обстоятельном (но, к сожалению, очень трудном для понимания) материале Ивана Паскаля "X Keyboard Extension" (см. [П116] приложения). Приведем очень краткий конспект основных положений этого материала.

Как было сказано выше, при работе в системе X Window клавиатура передает этой системе чистые скан-коды. Клавиатурный модуль Х-сервера передает сообщение о нажатии (и отпускании) кнопки прикладной программе. В этом сообщении указывается только скан-код нажатой кнопки и "состояние клавиатуры" — набор битовых "флагов", который отражает состояние клавиш-модификаторов (<Shift>, <Ctrl>, <Alt>. <Caps Lock> и т. п.). "Клиентская" программа должна сама решить — какой код символа, соответствующий скан-коду, надо выбрать при таком сочетании битов-модификаторов. Разумеется, при создании программ никто не пишет каждый раз программу для интерпретации скан-кодов. Для этих целей существуют специальные подпрограммы в библиотеке X-Lib. Процедуры из X-Lib, зная скан-код и "состояние клавиатуры", выбирают подходящий символ в соответствии с таблицей символов, которая хранится в Х-сервере и которую они обычно "запрашивают" у Х-сервера при старте программы. Эту таблицу можно менять с помощью утилиты xmodmap. Действующая таблица выводится командой xmodmap -pk.

9.3.7. Модуль XKB

В последних версиях дистрибутивов Linux устанавливается дополнительный модуль работы с клавиатурой — ХКВ. Модуль XKB точно также сообщает программе только скан-код и свое "состояние". Но в отличие от "старого" модуля (который называют "core protocol", или "соге-модуль") XKB имеет более сложную таблицу символов, другой набор "модификаторов" и некоторые дополнительные параметры "состояния клавиатуры". Поэтому для полноценной работы с XKB библиотека X-Lib должна содержать модифицированные процедуры интерпретации скан-кодов (процедуры, "знающие" о ХКВ). Естественно, все версии X Window, у которых Х-сервер "укомплектован" модулем ХКВ, имеют и соответствующую библиотеку X-Lib. Таким образом, XKB фактически делится на две части — модуль, встроенный в Х-сервер, и набор подпрограмм, входящих в библиотеку X-Lib.

Однако, поскольку существуют программы, которые были рассчитаны на работу со старой библиотекой X-Lib, "не подозревающей" о существовании ХКВ, возникает "проблема совместимости". То есть, модуль XKB должен уметь общаться как со "своей" X-Lib, так и со "старой" (работающей в соответствии с Гпава 9. Подключение и настройка аппаратных устройств.

.271

"core protocol"). Естественно, "общение" не ограничивается только передачей сообщений о нажатии/отпускании клавиш. Процедуры X -Lib могут обращаться к Х-серверу с различными запросами (например — взять таблицу символов) и командами (например, поменять в этой таблице расположение символов). На все эти запросы и команды модуль XKB должен реагировать так, чтобы даже "старая" X-Lib могла работать правильно (насколько это возможно).

При старте Х-сервера, модуль XKB зачитывает все необходимые данные из текстовых файлов, которые образуют "базу данных" настроек XKB. Строго говоря, большинство из этих файлов сам модуль XKB не читает. Он вызывает программу xkbcomp, которая переводит содержимое этих файлов в двоичный формат, понятный непосредственно модулю ХКВ. Но для настройки это не так уж важно, поскольку вызов xkbcomp происходит автоматически, незаметно для пользователя.
Предыдущая << 1 .. 109 110 111 112 113 114 < 115 > 116 117 118 119 120 121 .. 274 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100