код клавиш в linux

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

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

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

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

код клавиш в linux

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

код клавиш в linux

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

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

код клавиш в linux

код клавиш в linux

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

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

код клавиш в linux

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

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

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

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

код клавиш в linux

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

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

код клавиш в linux

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

код клавиш в linux

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

код клавиш в linux

код клавиш в linux

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

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

код клавиш в linux

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

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

код клавиш в linux

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

код клавиш в linux

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

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

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

код клавиш в linux

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

код клавиш в linux

код клавиш в linux

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

код клавиш в linux

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

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

код клавиш в linux

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

код клавиш в linux

код клавиш в linux

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

код клавиш в linux

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

Источник

Код клавиш в linux

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

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

9.3.1. Команда kbdrate

for tty in /dev/tty3*; 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
Полную версию статьи
читай в январском номере Хакера!

Источник

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 устанавливает новую таблицу на место.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *