код клавиш в linux

Где взять названия клавиш для каждого keycode клавиатуры?

но эта таблица врёт (устарела): так, например, на самом деле keycode «А» не 0x41, а 0x26

остальные номера клавиш тоже не совпадают

возможно, уже где-то есть готовые либы, правильно переводящие keycode в name

на самом деле keycode «А» не 0x41, а 0x26

но эта таблица врёт (устарела): так, например, на самом деле keycode «А» не 0x41, а 0x26

ты не различил ascii keycode и scan keycode

слишком жирная либа, чтобы ещё и её тянуть

Мне кажется что я где-то запутал и усложнил, но не могу найти что тут можно выкинуть.

там какие-то не те коды

там с локалью, а мне надо без

Там соответствие «сигнала» клавиатуры какому-то иксовоу коду, который потом через локаль маппится в символ.

У тебя задача какая? Собрать список вида «a = 0x26»? Тогда без локали у тебя не получится.

Хочу добавить: можно дампнуть полный текущий конфиг xkb в файл

Там будет вся инфа, а не размазана по куче xkb инклудов. Я здесь с xkb упражнялся Настройка XKB

Задача собрать список вида «LeftArrow = 0x69», «F20 = 0x50»

она не соответствует реальным сканкодам

Да, вот тут, похоже, коды правильные. Спасибо.

В чём заключается жирность?

на самом деле keycode «А» не 0x41, а 0x26

на самом деле 0x1e

вообще никак не согласуется с теми кодами, которые я получаю на практике

никак не согласуется с теми кодами, которые я получаю на практике

Что посылает ядро можно посмотреть sudo evtest

вот иксовый код из xev той же клавиши A

у него наварное иксы

к слову, а в mir|wayland такие же коды, как в иксах или другие?

Тебе теорию надо курить сильно, ты не понимаешь что делаешь и как оно работает. Можешь вот это почитать для затравки.

А вообще дело в том, что куча абстракций навёрнуто между нажатием a и получением буквы a в посте на ЛОР-е. Сначала драйвер клавиатуры в общем случае какой-то код получает и как-то обменивается с железкой, потом отдаёт коды ядру линукса, преобразуя их в те, о которых знает ядро (смотри input-event-codes.h), на который тебе дали ссылку. Поверх этого могут крутиться иксы или вяленый, они коды от ядра уже в свои преобразуют (ты иксовые ищешь, боюсь в вяленом другие могут быть), поверх этого текстовой редактор сохраняет коды некоторых клавиш согласно кодировке. Это если грубо подумать опираясь на то, что иксы и вяленый не только на ядре linux-а работать должны. За детали реальной реализации не ручаюсь, т.к. не копался глубоко и это по сути только догадки.

а какой именно клавиатуры, они разные бывают

насколько я понимаю, они все переводятся ядром/иксами к неким стандартным кодам

в том, что уже qt использую, не хочу ещё и sdl тянуть

Источник

Код клавиш в linux

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

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

9.3.1. Команда kbdrate

for tty in /dev/tty8*; 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) и различаются представлением символов русского алфавита и псевдографики во второй половине.

Одна из самых известных кодовых таблиц для кириллицы получила название альтернативной (по отношению к кодировке 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, а старшая половина определяет символы для различных языков. Например:

Фирма 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

Источник

Нихт ферштейн: учим пингвина понимать мультимедийные клавиши

Содержание статьи

Определение скан-кода клавиш

Что бы ты там не нажимал на своей клавиатуре, X-серверу и ядру, в общем-то, все равно, что на ней написано или нарисовано. Их интересуют исключительно скан-код кнопки, причем сначала иксы считывают таблицу кодов клавиш ядра, а затем уже код клавиши привязывается к собственной таблице кодов. Если в Windows проблемы настройки мультимедийных клавиш в консоли как таковой не существует, то в Linux приходится отдельно настраивать реакцию на нажатие кнопок в консоли и в X-Window.

Чтобы узнать код клавиши, следует использовать утилиту xev, входящую в состав Х-сервера. После ее запуска появляется окно Event Tester, теперь последовательно нажимаем клавиши, запоминая выдаваемый код:

$ xev
.
KeyRelease event, serial 31, synthetic NO, window 0x3e00001,
root 0x67, subw 0x0, time 279734676, (311,611), root:(1104,687),
state 0x2000, keycode 236 (keysym 0x1008ff19, XF86Mail), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 31, synthetic NO, window 0x2600001,
root 0x67, subw 0x0, time 265877259, (883,334), root:(886,358),
state 0x0, keycode 161 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Вывод может быть огромен, так как отслеживается каждое движение мышки при проходе над окном Event Tester. Клавишу описывает блок KeyRelease, в частности, значение keycode как раз и является скан-кодом, который мы хотим узнать. В приведенном примере нажаты две клавиши. Клавише с кодом 236 соответствует код клавиши для X-сервера, указанный в keysym, а также действие XF86Mail, которое в KDE запускает используемый по умолчанию почтовый клиент. Для клавиши с номером 161 код и действие не определены.

Возможна ситуация, когда клавиша нажимается, но ее скан-код не выдается. Это означает, что ядро не может найти соответствующее значение. В выводе dmesg должна быть такая строка:

Use ‘setkeycodes 0xec ‘ to make it known.

То есть тебе предлагают установить скан-код клавиши самостоятельно при помощи setkeycodes, при этом значение keycode выбрать очень просто. Переведи полученную цифру в десятичное число (большинство калькуляторов это умеют) и прибавь 128. В данном примере 0xec=236, то есть получаем скан-код 364. Если есть сомнения, список задействованных и незадействованных скан-кодов можно просмотреть, запустив в консоли утилиту getkeycodes или dumpkeys. Например, если вывод «getkeycodes | grep » ничего не дал, значит этот код можно смело использовать.

Помочь определить скан-код способна и утилита ХKeycaps (www.jwz.org/xkeycaps), которая является графическим фронт-эндом к Xmodmap.

В консоли программа xev, разумеется, не работает. Чтобы узнать скан-код, выдаваемый ядром, следует использовать утилиту showkey или getkeycodes:

$ showkey
клавиатура была в режиме UNICODE
нажмите любую клавишу (программа завершится через 10 сек после последнего нажатия).
0xe0 0x6c 0xe0 0xec

Первые две цифры соответствуют нажатой клавише, вторые – отсутствию нажатия.

Настройка привязки скан-кодов в X-Window

$ cat /usr/include/X11/XF86keysym.h
/*
* Keys found on some «Internet» keyboards.
*/
#define XF86XK_Standby 0x1008FF10
#define XF86XK_AudioLowerVolume 0x1008FF11
#define XF86XK_AudioRaiseVolume 0x1008FF13
#define XF86XK_AudioPlay 0x1008FF14
#define XF86XK_AudioStop 0x1008FF15
#define XF86XK_Mail 0x1008FF19

keycode 161 XF86Calculator
keycode 174 XF86AudioLowerVolume
keycode 176 XF86AudioRaiseVolume
keycode 162 XF86AudioPause

И так далее, принцип, думаю, ясен. Причем код клавиш можно заносить как в десятичном, так и шестнадцатеричном виде. По моим наблюдениям, коды большинства клавиш стандартизированы. Поэтому, если ты один раз настроишь реакцию на нажатие клавиши и перенесешь файл на другой комп, есть вероятность, что на другой клаве реакция на нажатие также подписанной клавиши будет аналогичная. Пользователи рабочего стола Gnome с GDM могут прописать все эти строки в общесистемный файл /etc/X11/Xmodmap.

В результате находим прелюбопытнейший файл /etc/X11/Xsession.d/80ubuntu-xmodmap такого содержания:

/usr/bin/xmodmap /usr/share/apps/kxkb/ubuntu.xmodmap || true

/.icewm, появляющийся после первого запуска, следует добавить строку:

В Fluxbox строка для запуска проигрывателя будет выглядеть так:

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

Настройка реакции в консоли

$ setkeycodes 0xec 118

Посмотреть свободные значения можно в файле текущей клавиатурной раскладки. В Ubuntu и всех дистрибутивах, базирующихся на Debian, это обычно /etc/console-setup/boottime.kmap.gz. Если после запуска проблем с клавишами нет, заносим эту строку в один из стартовых скриптов, например в /etc/init.d/rc.local.

Теперь осталось задать соответствие клавиши и выполняемого действия. Здесь простор для творчества даже больше, чем в иксах. В keymaps(5) процедура установки соответствия keycode выглядит следующим образом:

< plain | >keycode keynumber = keysym

# Переключение консоли на одну назад при нажатии на клавишу с кодом 105
keycode 105 = Decr_Console
# Переключение консоли на одну вперед при нажатии на и клавишу с кодом 106
alt keycode 106 = Incr_Console

Но можно создавать и свои варианты, указывая команду в переменных:

Другими словами, по нажатии клавиши с кодом 120 будет выполнено действие, указанное в переменной F100; в нашем случае задано выключение компьютера. Вместо F100, естественно, можно использовать любое другое имя.

/.console-setup), все настройки нужно будет перенести в другой файл, что несколько
неудобно. Если ты все-таки решишься на этот шаг, используй имеющиеся записи как шаблон, ничего не записывая на первую позицию, а в конце не забудь оставить пустую строку.

Немного о ноутбуке

$ sudo mcedit /etc/acpi/events/lid

$ sudo mcedit /etc/acpi/events/power

Это несколько упрощенные варианты, в KUbuntu ты найдешь более сложные скрипты. После этого требуется перезапуск демона acpid:

$ sudo /etc/init.d/acpid restart

Программы настройки

Возможности KeyTouch (keytouch.sf.net) несколько скромнее, эта утилита применяется исключительно для настройки мультимедийных клавиш. Хотя с ее помощью любой клавише можно назначить свое действие, отличающееся от установок по умолчанию. На сайте программы, кроме исходных текстов и пакетов для некоторых дистрибутивов, можно найти готовые настройки для мультимедийных клавиатур большинства известных производителей.


Полную версию статьи
читай в январском номере Хакера!

Источник

Linux console (Русский)/Keyboard configuration (Русский)

Сопоставление клавиш (раскладки) для виртуальной консоли, консольных шрифтов и консольных карт предоставляется пакетом kbd (зависимость для systemd), который также предоставляет множество инструментов низкого уровня для управления виртуальной консолью. Кроме того, systemd также предоставляет инструмент localectl, который может контролировать как локали системы, так и настройки раскладки клавиатуры как для виртуальной консоли, так и для Xorg.

Contents

Просмотр настроек клавиатуры

Используйте localectl status для просмотра текущих конфигураций клавиатуры.

Раскладки клавиатуры

Список раскладок

Соглашения об именах консольных раскладок несколько условны, но обычно они основаны на:

Для получения списка всех доступных раскладок используйте команду:

Чтобы найти раскладку клавиатуры, используйте следующую команду, заменив search_term кодом для вашего языка, страны или раскладки:

Альтернативно, используя find:

Временная конфигурация (Loadkeys)

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

Постоянная конфигурация

Создание своей раскладки

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

Сначала, создайте файл раскладки. Этот файл раскладки может быть где угодно, но этот способ подражает иерархии каталогов в /usr/local :

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

Добавление директив

В этой личной раскладке требуются два типа директив. Прежде всего директивы keycode, которые соответствуют формату, указанному в стандартных раскладках по умолчанию. Эти директивы сопоставляют keycode с keysym. Keysyms представляют действия клавиатуры. Доступные действия включают вывод кодов символов или последовательностей символов, переключение консолей или раскладок клавиатуры, загрузку машины и многие другие действия. Полную активную текущую раскладку можно получить с помощью

Большинство keysyms интуитивно понятны. Например, чтобы настроить клавишу 112 для вывода символа ‘e’, директива примет следующий вид:

Чтобы настроить клавишу 112 для вывода символа евро, директива будет следующего вида:

Некоторые keysym не сразу связаны с действиями клавиатуры. В частности, keysyms с префиксом заглавной буквы F и от одной до трех цифр (F1-F246), составляющие число больше 30, всегда свободны. Это полезно для указания горячей клавиши для вывода последовательности символов и других действий:

Затем F70 может быть связан для вывода определенной строки:

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

Другие примеры

Сохранение изменений

Чтобы использовать свою раскладку, нужно ее загрузить с помощью loadkeys:

Регулировка задержки и скорости автоповтора

Задержка автоповтора означает количество времени (обычно в милисекундах), за которое необходимо нажать и удерживать клавишу для начала повторного процесса. После запуска повторяющегося процесса символ будет повторяться с определенной частотой (обычно заданной в Гц), указанной скоростью автоповтора. Эти значения могут быть изменены с помощью команды kbdrate. Обратите внимание, что эти настройки настраиваются отдельно для виртуальной консоли и для Xorg.

Например, чтобы установить задержку автоповтора в 200 мс и скорость автоповтора в 30 Гц, используйте следующую команду:

Ввод команды без указания задержки и скорости автоповтора приведет к сбросу значений до их соответствующих значений по умолчанию; задержка 250 мс и скорость 11 Гц:

Служба systemd

Службу systemd можно использовать для установки скорости клавиатуры. Например

Источник

Код клавиш в linux

ОПИСАНИЕ
Клавиатура персонального компьютера используется для ввода данных, переключения экранов и направления некоторых управляющих сигналов компьютеру. Система UNIX выполняет эмуляцию экрана и клавиатуры терминала и при этом извлекает пользу из некоторых особенных клавиш и их комбинаций. Эти клавиши и их комбинации имеют специальные названия, которые уникальны в системе UNIX и могут соответствовать, а могут и не соответствовать меткам клавиш на вашей клавиатуре. Эти клавиши будут описаны позже.

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

Сигналы
Сигналы оказывают воздействие на процесс или несколько процессов. Примерами сигналов являются Ctrl-d (конец ввода и выход из оболочки), Ctrl-\ (завершение процесса), Ctrl-s ( остановка выдачи еа экран) и Ctrl-q (возобновление выдачи).

Обычно символы ставятся в соответствие сигналам с помощью stty(1). Единственный способ поставить сигнал в соответствие символам через посредство stty.

Изменение значения нажатий клавиш
Действительный код, посылаемый драйверу клавиатуры, может быть изменен с помощью комбинации некоторых клавиш. Например, клавиша SHIFT меняет значение символов ASCII буквенно-цифровых клавиш. Удерживание клавиши Ctrl при нажатии других клавиш генерирует управляющие коды (Ctrl-d, Ctrl-s, Ctrl-q и др.).

Специальные клавиши
Для облегчения отыскания специальных клавиш в следующей таблице показано соответствие клавиш типичной консоли ключам системы UNIX. В этой таблице черточка (-) между названиями клавиш означает «удерживайте первую клавишу, нажимая на вторую».

Название в системе XENIX Метки на клавиатуре Действие
INTR Del Останавливает текущее действие и возвращает в оболочку. Эта клавиша называется также RUB OUT или INTERRUPT.
BACKSPACE nop nop ‘,’ ‘>’ nop nop O
53 ‘/’ ‘?’ nop nop ‘/’ ‘?’ nop nop O
54 rshift rshift rshift rshift rshift rshift rshift rshift O
55 ‘*’ ‘*’ nscr nscr ‘*’ ‘*’ nscr nscr O
56 alt alt alt alt alt alt alt alt O
57 ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ ‘ O
58 clock clock clock clock clock clock clock clock O
59 fkey1 fkey13 fkey25 fkey37 scr1 scr11 scr1 scr11 O
60 fkey2 fkey14 fkey26 fkey38 scr2 scr12 scr2 scr12 O
61 fkey3 fkey15 fkey27 fkey39 scr3 scr13 scr3 scr13 O
62 fkey4 fkey16 fkey28 fkey40 scr4 scr14 scr4 scr14 O
63 fkey5 fkey17 fkey29 fkey41 scr5 scr15 scr5 scr15 O
64 fkey6 fkey18 fkey30 fkey42 scr6 scr16 scr6 scr16 O
65 fkey7 fkey19 fkey31 fkey43 scr7 scr7 scr7 scr7 O
66 fkey8 fkey20 fkey32 fkey44 scr8 scr8 scr8 scr8 O
67 fkey9 fkey21 fkey33 fkey45 scr9 scr9 scr9 scr9 O
68 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
69 nlock nlock dc3 dc3 nlock nlock dc3 dc3 O
70 slock slock del del slock slock del del O
71 fkey49 ‘7’ ‘7’ ‘7’ ‘7’ ‘7’ ‘7’ ‘7’ N
72 fkey50 ‘8’ ‘8’ ‘8’ ‘8’ ‘8’ ‘8’ ‘8’ N
73 fkey51 ‘9’ ‘9’ ‘9’ ‘9’ ‘9’ ‘9’ ‘9’ N
74 fkey52 ‘-‘ ‘-‘ ‘-‘ ‘-‘ ‘-‘ ‘-‘ ‘-‘ N
75 fkey53 ‘4’ ‘4’ ‘4’ ‘4’ ‘4’ ‘4’ ‘4’ N
76 fkey54 ‘5’ ‘5’ ‘5’ ‘5’ ‘5’ ‘5’ ‘5’ N
77 fkey55 ‘6’ ‘6’ ‘6’ ‘6’ ‘6’ ‘6’ ‘6’ N
78 fkey56 ‘+’ ‘+’ ‘+’ ‘+’ ‘+’ ‘+’ ‘+’ N
79 fkey57 ‘1’ ‘1’ ‘1’ ‘1’ ‘1’ ‘1’ ‘1’ N
80 fkey58 ‘2’ ‘2’ ‘2’ ‘2’ ‘2’ ‘2’ ‘2’ N
81 fkey59 ‘3’ ‘3’ ‘3’ ‘3’ ‘3’ ‘3’ ‘3’ N
82 fkey60 ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ N
83 del ‘.’ del del del del del del N
84 nop nop nop nop nop nop nop nop O
85 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
86 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O

Следующие скан-коды генерируются только на клавиатурах, которые поддерживают и находятся в режиме AT.

SCAN CODE BASE SHIFT CTRL CTRL SHIFT ALT ALT SHIFT ALT CTRL ALT CTRL SHIFT LOCK
87 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
88 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
89 nop nop nop nop nop nop nop nop O
90 nop nop nop nop nop nop nop nop O
91 nop nop nop nop nop nop nop nop O
92 nop nop nop nop nop nop nop nop O
93 nop nop nop nop nop nop nop nop O
94 nop nop nop nop nop nop nop nop O
95 nop nop nop nop nop nop nop nop O
96 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
97 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
98 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
99 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
100 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
101 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
102 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
103 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
104 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
105 del del del del del del del del 0
106 nop nop nop nop nop nop nop nop O
107 nop nop nop nop nop nop nop nop O
108 nop nop nop nop nop nop nop nop O
109 nop nop nop nop nop nop nop nop O
110 nop nop nop nop nop nop nop nop O
111 nop nop nop nop nop nop nop nop O
112 nop nop nop nop nop nop nop nop O
113 nop nop nop nop nop nop nop nop O
114 nop nop nop nop nop nop nop nop O
115 nop nop nop nop nop nop nop nop O
116 nop nop nop nop nop nop nop nop O
117 nop nop nop nop nop nop nop nop O
118 nop nop nop nop nop nop nop nop O
119 nop nop nop nop nop nop nop nop O
120 nop nop nop nop nop nop nop nop O
121 nop nop nop nop nop nop nop nop O
122 nop nop nop nop nop nop nop nop O
123 nop nop nop nop nop nop nop nop O
124 nop nop nop nop nop nop nop nop O
125 nop nop nop nop nop nop nop nop O
126 nop nop nop nop nop nop nop nop O
127 nop nop nop nop nop nop nop nop O
128 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
129 ralt ralt ralt ralt ralt ralt ralt ralt O
130 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
131 del del del del del del del del 0
132 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
133 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
134 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
135 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
136 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
137 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
138 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
139 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
140 ‘/’ nop nop nop ‘/’ nop nop nop O
141 cr cr nl nl cr cr nl nl O

В следующей таблице перечисляются «значения» специальных ключевых слов в файле /usr/lib/keyboard/keys (и в предыдущей таблице). mapkey(ADM) помещает «значение» ключевого слова в буфер управления вводом/выводом во время назначения клавиш. Эти ключевые слова используются только в файле скан-кодов /usr/lib/keyboard/keys для упрощения его чтения.

В следующей таблице перечисляются названия ключевых слов и их десятичные значения, которые могут взаимозаменяться в файле mapkey. Эти названия используются вместо соответствующих численных констант для облегчения чтения таблицы скан-кодов. Но в буфер управления вводом/выводом помещаются только десятичные значения. Они берутся из ascci(5).

Название Значение Название Значение
nul 0 dc1 17
soh 1 dc2 18
stx 2 dc3 19
etx 3 dc4 20
eot 4 nak 21
enq 5 syn 22
ack 6 etb 23
bel 7 can 24
bs 8 em 25
ht 9 sub 26
nl 10 esc 27
vt 11 fs 28
np 12 gs 29
cr 13 rs 30
so 14 ns 31
si 15 del 127
dle 16

Назначение клавиш клавиатуры
Установление соответствия клавиш клавиатуры является составной частью эмуляции терминала. Эта процедура выполняется только для клавиатуры компьютера, но не для удаленных терминалов. Для изменения таблицы соответствий клавиш используйте утилиту mapkey. Чтобы изменить эту таблицу для отдельных каналов (экранов в многоэкранном режиме) используйте программу mapchan(5).

При установке соответствий клавиш клавиатуры значение cmd=GIO_KEYMAP высвечивает текущую таблицу соответствий, а cmd=PIO_KEYMAP помещает готовый буфер на место.

Назначение функциональных клавиш
Для назначения функциональных клавиш используйте утилиту mapstr (см. mapkey(8)). mapstr модифицирует таблицу соответствий функциональных клавиш, в которой эти клавиши определяются.

Не существует ограничения на длину строки, кроме предела самой таблицы, 512 байтов, включая нули. Строки обнуляются введением дополнительных нулевых символов.

Далее приведен список значений функциональных клавиш, устанавливаемых по умолчанию:

Значения функциональных клавиш по умолчанию
Клавиша # Функция Shift
Функция
Ctrl
Функция
Ctrl
Shift
Функция
1 ESC[M ESC[Y ESC[k ESC[w
2 ESC[N ESC[Z ESC[l ESC[x
3 ESC[O ESC[a ESC[m ESC[y
4 ESC[P ESC[b ESC[n ESC[z
5 ESC[Q ESC[c ESC[o ESC[@
6 ESC[R ESC[d ESC[p ESC[[
7 ESC[S ESC[e ESC[q ESC[\
8 ESC[T ESC[f ESC[r ESC[]
9 ESC[U ESC[g ESC[s ESC[^
10 ESC[V ESC[h ESC[t ESC[_
11 ESC[W ESC[i ESC[u ESC[‘
12 ESC[X ESC[j ESC[v ESC[ <
Home ESC[H End ESC[F
Up arrow ESC[A Down arrow ESC[B
Page up ESC[I Page down ESC[G
Left arrow ESC[D 5 ESC[E
Right arrow ESC[C Insert ESC[L

Вы можете назначать функциональные клавиши с помощью ioctl(2). Синтаксис имеет вид:

При установке соответствий клавиш клавиатуры значение cmd=GIO_KEYMAP высвечивает текущую таблицу соответствий, а cmd=PIO_KEYMAP устанавливает новую таблицу на место.

Источник

Операционные системы и программное обеспечение