Ввод с клавиатуры линукс

LinuxShare

Вход для пользователей

Кто на сайте

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

Ввод с клавиатуры
Пред. Глава 4. X Window След.

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

В последних выпусках X (X11R61 и выше) имеются два «стандартных» способа ввода с клавиатуры: Xkb или X KeyBoard (раздел “Настройка Xkb”) и старый способ, работающий через утилиту xmodmap (см. раздел “xmodmap”).

Настройка Xkb

Полную и исчерпывающую (даже слишком исчерпывающую) документацию по настройке Xkb можно найти у Ивана Паскаля.

Немного теории

При старте X-сервера, модуль XKB зачитывает все необходимые данные из текстовых файлов, которые образуют «базу данных» настроек XKB .

Строго говоря, большинство из этих файлов сам модуль XKB не читает. Он вызывает программу xkbcomp , которая переводит содержимое этих файлов в двоичный формат, понятный непосредственно модулю XKB .

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

База данных, необходимых XKB, состоит из 5 компонентов:

keycodes Таблицы, которые просто задают символические имена для скан-кодов. Например:

types Описывает типы клавиш. Тип клавиши определяет — как должно меняться значение, выдаваемое клавишей в зависимости от модификаторов ( Control , Shift и т.п.). Так, например, «буквенные» клавиши относятся к типу ALPHABETIC , что означает, что они имеют разное значение в зависимости от состояния Shift и CapsLock . А клавиша [Enter] имеет тип — ONE_LEVEL , что означает, что её значение всегда одно и то же, независимо от состояния модификаторов.

compat (сокращённое от compability) Описывает «поведение» модификаторов. В XKB имеется несколько внутренних переменных, которые, в конечном счёте, и определяют — какой символ будет генерироваться при нажатии клавиши в конкретной ситуации. Так вот, в compat как раз описывается — как должны меняться эти переменные при нажатии различных клавиш-модификаторов. В этом же разделе обычно описывается и поведение «лампочек-индикаторов» на клавиатуре.

symbols Таблицы, в которых для каждого скан-кода (имени скан-кода, определённого в keycodes ) перечисляются все значения ( symbols ), которые должна выдавать клавиша. Естественно, количество различных значений зависит от типа клавиши (которые описываются в types ), а какое именно значение будет выдано в конкретной ситуации, определяется состоянием модификаторов и их «поведением» (которое описывается в compat ).

geometry Описывает «геометрию» клавиатуры — то есть расположение клавиш на клавиатуре. Эти описания нужны не столько самому X-серверу, сколько прикладным программам, которые рисуют изображение клавиатуры.

Все эти компоненты разложены по одноимённым директориям в директории /lib/X11/xkb (в дальнейшем, я буду обозначать её ).

Весь набор компонентов, необходимых для настройки XKB, описывается в файле конфигурации X-сервера в секции Keyboard .

Настройка

Чтобы настроить XKB, в файле конфигурации X-сервера надо задать параметры XkbRules , XkbModel , XkbLayout и, если вам нужно что-то не совсем стандартное — XkbVariant и XkbOptions .

означает, что XKB должен в соответствии с правилами, описанными в файле /rules/xfree86, выбрать настройки для клавиатуры типа "pc104" (104 кнопки), русского алфавита (английский алфавит будет включён "по умолчанию").Если у вас "windows" клавиатура (что верно в 99% случаев), то полезно указать XkbVariant как "winkeys", в противном случае оставьте эту опцию пустой — "". В самом конце идут дополнительные опции для вашей "раскладки клавиатуры" — "grp:shift_toggle,grp_led:scroll", которые описывают метод — переключения: две клавиши "Shift" , при этом загорается лампочка Scroll Lock на клавиатуре.

Несколько практических рекомендаций.

Небольшое отступление — "о клавише-переключателе рус/лат".

Другие варианты смены кодировки:

grp:toggle — переключение правым Alt;

grp:shift_toggle — двумя клавишами shift;

grp:caps_toggle — переключение по CapsLock;

grp:lwin_toggle — переключение по левой "Win" клавише на Windows клавиатуре (для X Window старше 4.2);

Читайте также:  Медленная анимация windows 10

grp:rwin_toggle — переключение по правой "Win" клавише на Windows клавиатуре (для X Window старше 4.2);

grp:menu_toggle — переключение по клавише "Контекстное меню" на Windows клавиатуре (для X Window старше 4.2);

grp:switch — переключение по правому Alt только на момент нажатия [5] ;

Когда был написан первый вариант этих рекомендаций, сама раскладка "русской" клавиатуры ( symbols/ru ) включала в себя и "переключатель групп" рус/лат, "подвешенный" на клавишу CapsLock . С одной стороны, это было удобно — в простейшем случае достаточно было выбрать "русскую раскладку", и вы автоматически получали и клавишу для переключения "на русский". Но, с другой стороны, это было неудобно для тех, кто предпочитает в качестве переключателя рус/лат другую клавишу (или комбинацию клавиш). Конечно, выбрать другой переключатель не составляло труда, но при этом оставался и переключатель на CapsLock , что многим не нравилось. Для того, чтобы убрать его, надо было "залезть" в соответствующий файл и вручную подправлять соответствующую раскладку.

В конце концов (начиная с версии 3.3.4) сами разработчики XFree убрали этот "переключатель" из "русской раскладки". Но в связи с этим появились и некоторые проблемы — теперь клавишу-переключатель надо явно "заказывать" при конфигурировании XKB .

Самый простой способ настройки — использовать программу для автоматической настройки X Window .

В XFree86 такая программа называется XF86Setup .

При этом "по умолчанию" используются "правила" ( XkbRules ) — xfree86 . Вам нужно будет только выбрать "модель" ( XkbModel ), "схему" ( XkbLayout ) и "способ переключения групп" (переключатель "РУС/ЛАТ").

Кроме того, при желании вы можете изменить "положение клавиши Ctrl ". Естественно, в конфигурации это будет выглядеть как соответствующие строчки XkbOptions .

Итак. Запустите программу XF86Setup, выберите раздел Keyboard . В этом разделе выберите из меню Model (тип клавиатуры) и Layout (язык). Не забудьте отметить в отдельных списках (в правой части) подходящий "переключатель групп" и, если хотите — "расположение Ctrl ".

При выходе из программы она запишет соответствующие строчки в файл конфигурации XFree в секции Keyboard .

Для смены кодировки можно воспользоваться любой из многочисленных программ переключения кодовых страниц через xkb — например, я пользуюсь программой xxkb Ивана Паскаля.

xmodmap

Описанное ниже относится к относительно старым версиям X Window (Заведомо к версиям, меньшим 3.3.3), в которых способ Xkb (раздел “Настройка Xkb”) не работает.

В случае русификации через xmodmap первое, что вы должны сделать, — это отключить Xkb !

Чтобы отключить поддержку Xkb , в файле XF86Config изучите раздел Keyboard и закомментируйте все строки, начинающиеся с Xkb (регистр не имеет значения). Взамен добавьте следующую строку:

Программа xmodmap позволяет настроить коды, соответствующие различными символам и их комбинациям. Эта настройка основана на файле, содержащем таблицу перекодировки.

Я настоятельно советую вам самостоятельно не разбираться с xmodmap, по крайней мере для начала. Вы не получите ничего, кроме головной боли и разочарования. Вместо этого я рекомендую вам установить пакет xruskb, который позволяет вам сконфигурировать большинство входных параметров перекодировки без необходимости сталкиваться с xmodmap.

[5] В случае замены toggle на switch в комбинациях, описанных выше, переключение регистра возникает только на момент нажатия комбинации.

Источник

Ввод с клавиатуры линукс

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

  • раскладка клавиатуры;
  • скорость повтора посылаемых клавиатурой сигналов в случае удержания клавиш пользователем;
  • длительность интервала задержки от момента нажатия клавиши до того момента, когда клавиатура начинает повторять посылку сигналов.

Два последних параметра (скорость повтора и время задержки) устанавливаются с помощью специальной команды kbdrate .

9.3.1. Команда kbdrate

Скорость повтора задается в символах в секунду и может принимать только определенные значения в пределах от 2 до 30 символов в секунду. Но задать (после опции –r) вы можете любое значение в этих пределах, программа сама выберет ближайшее допустимое значение. Число после опции -d задает задержку в миллисекундах (допустимы значения от 250 до 1000 с шагом 250). Чтобы не устанавливать эти значения после каждого перезапуска компьютера, можно добавить в файл /etc/rc.d/rc.sysinit сроку следующего вида:

Читайте также:  Языковые пакеты windows 10 украинский

/sbin/kbdrate -s -r 16 -d 500

где опция -s просто подавляет вывод ненужных в данном случае сообщений. Если эту команду выполнить без указания параметров, для скорости повтора и задержки будут установлены значения по умолчанию: для скорости повтора — 10,9 символов в секунду, а для задержки — 250 миллисекунд.

Еще один вопрос, относящийся к настройке клавиатуры, — это способ изменения положения переключателей NumLock, CapsLock и ScrollLock. Для этого можно воспользоваться командой setleds . Например, для того, чтобы переключатель NumLock был по умолчанию включен, добавьте в файл /etc/rc.d/rc.sysinit следующие строки:

for tty in /dev/tty7*; do

Изменение раскладки клавиатуры — это вопрос значительно более сложный. Но, поскольку этот вопрос имеет большое значение как вообще для настройки клавиатуры, так и для решения проблемы русификации, его необходимо рассмотреть подробнее.

И начать придется с краткого изложения проблем кодировки символов.

9.3.2. Таблицы кодировки символов

В человеческом мире информация представляется последовательностями символов. Каждый символ имеет каноническое изображение, которое позволяет однозначно идентифицировать данный символ. Шрифты задают разные варианты начертания символов.

В вычислительных машинах для представления информации используются цепочки байтов. Поэтому для перевода информации из машинного представления в человеческий необходимы таблицы кодировки символов — таблицы соответствия между символами определенного языка и кодами символов.

Самой известной таблицей кодировки является код ASCII (Американский стандартный код для обмена информацией), который был разработан для передачи текстов по телеграфу задолго до появления компьютеров. Этот код является 7 битовым, т. е. для кодирования символов английского языка, служебных и управляющих символов используются только 128 7-битовых комбинаций. При этом первые 32 комбинации (кода) служат для кодирования управляющих сигналов (начало текста, конец строки, перевод каретки, звонок, конец текста и т. д.).

При разработке первых компьютеров фирмы IBM этот код был использован для представления символов в компьютере. Поскольку в исходном коде ASCII было всего 128 символов, для их кодирования хватило тех однобайтовых кодов, у которых 8-й бит равен 0. Во второй половине кодовой таблицы (значения байта с 8-м битом равным 1) фирма IBM разместила символы псевдографики, математические знаки и некоторые символы из языков, отличных от английского (немецкие умляуты, французские диакритические знаки, символы греческого алфавита и т.п.). Эту кодовую таблицу стали называть кодировкой IBM.

Когда IBM-совместимые персональные компьютеры стали использовать в других странах, потребовалось обеспечить обработку информации на языках, отличных от английского. Для того, чтобы полноценно поддерживать другие языки, фирма IBM ввела в употребление несколько кодовых таблиц, ориентированных на конкретные страны. Так для скандинавских стран была предложена таблица 865 (Nordic), для арабских стран — таблица 864 (Arabic), для Израиля — таблица 862 (Israel) и так далее. В этих таблицах часть кодов из второй половины кодовой таблицы использовалась для представления символов национальных алфавитов (за счет исключения некоторых символов псевдографики). Для представления символов кириллицы была введена кодировка IBM-866.

Однако с русским языком ситуация развивалась особым образом. Очевидно, что замену символов во второй половине кодовой таблицы можно произвести разными способами. В других европейских странах сумели найти единое решение, а для русского языка появилось несколько разных таблиц кодировки символов кириллицы: IBM-866, CP-1251, KOI8-R, ISO-8859-5. Все они одинаково изображают символы первой половины таблицы (от 0 до 127) и различаются представлением символов русского алфавита и псевдографики во второй половине.

Читайте также:  Windows горячие клавиши запуск от имени администратора

Одна из самых известных кодовых таблиц для кириллицы получила название альтернативной (по отношению к кодировке IBM-866, наверное). Она была разработана фирмой Microsoft для MS-DOS. При ее разработке постарались сделать так, чтобы результирующая таблица была насколько это возможно совместима с кодировкой IBM. Поэтому альтернативная кодировка — это кодировка IBM, в которой все специфические европейские символы в верхней половине были заменены на кириллицу, оставляя псевдографические символы нетронутыми. Следовательно, это не портило вид программ, использующих для работы текстовые окна, что было очень существенным фактором для работы в среде MS-DOS, основой которой был именно текстовый режим.

Кодировка KOI-8 была разработана изначально с ориентировкой на UNIX. Так как UNIX в своей основе сетевая ОС, то основной идей при создании KOI-8 была идея об обеспечении перемещения кириллической информации по сети. Но для передачи-то использовался 7-битный стандарт ASCII. Разработчики поместили кириллические символы в верхней части таблицы таким образом, что позиции кириллических символов соответствуют их фонетическим аналогам в английском алфавите в нижней части таблицы. Это означает, что, если в тексте, написанном в KOI-8, мы убираем восьмой бит каждого символа, то мы все еще имеем "читабельный" текст, хотя он и написан английскими символами! Не удивительно, что KOI8-R быстро стал фактически стандартом для кириллицы в Интернет, что и нашло отражение в RFC 1489 ( "Registration of a Cyrillic Character Set"). Автором этого документа является Андрей А. Чернов, который проделал огромный объем работы, чтобы превратить KOI-8 в стандарт Интернет.

Международная организация по стандартизации (ISO) внесла свою лепту в создание различных кодировок кириллицы, когда ввела семейство стандартов, известных как ISO 8859-X. Это семейство есть совокупность 8-битных кодировок, где младшая половина каждой кодировки (символы с кодами 0—127) соответствует ASCII, а старшая половина определяет символы для различных языков. Например:

  • 8859-0 — новый европейский стандарт (так называемый Latin 0);
  • 8859-1 — Европа, Латинская Америка (также известный как Latin 1);
  • 8859-2 — Восточная Европа;
  • 8859-5 — кириллица;
  • 8859-8 — идиш.

Фирма Microsoft еще больше запутала ситуацию с кодировками для русского языка, когда при разработке Windows ввела кодировку CP-1251.

Таблицы кодировок, содержащие 256 символов, стали называть расширенными кодами ASCII (потому что в основе любой из них лежит 128-символьный код ASCII), кодовыми страницами или английским термином character set (который часто сокращают до charset).

Но в мире есть языки, такие как китайский или японский, для которых 256 символов в принципе недостаточно. Кроме того, всегда существует проблема вывода или сохранения в одном файле одновременно текстов на разных языках (например, при цитировании). Поэтому была разработана универсальная кодовая таблица UNICODE, содержащая символы, применяемые в языках всех народов мира, а также различные служебные и вспомогательные символы (знаки препинания, математические и технические символы, стрелки, диакритические знаки и т. д.). Очевидно, что одного байта недостаточно для кодирования такого большого множества символов. Поэтому в UNICODE используются 16-битовые (2-байтовые) коды, что позволяет представить 65 536 символов. К настоящему времени задействовано около 49 000 кодов (последнее значительное изменение — введение символа валюты EURO в сентябре 1998 г.). Для совместимости с предыдущими кодировками первые 128 кодов совпадают со стандартом ASCII. На рис. 9.1 схематично представлено размещение символов разных языков в кодовом пространстве UNICODE.

Рис. 9.1. Структура UNICODE.

В стандарте UNICODE кроме определенного двоичного кода (эти коды принято обозначать буквой U, после которой следуют знак + и собственно код в шестнадцатеричном представлении) каждому символу присвоено определенное имя. В следующей таблице приведено несколько примеров кодов и имен символов из стандарта UNICODE.

Таблица 9.2. Примеры именования кодов UNICODE

Источник

Оцените статью