Extra keyboard keys (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Extra keyboard keys. Дата последней синхронизации: 2015-06-29. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

На многих клавиатурах есть специальные клавиши (их иногда называют горячими клавишами или мультимедиа клавишами), которые сделаны для того, чтобы запускать приложения или печатать специальные символы (которые не назначены на стандартной национальной раскладке). udev (Русский) содержит в себу большую базу данных назначений клавиш, соответствующих конкретным клавиатурам, поэтому чаще всего клавиатуры работают из коробки. Если у вас очень новая или очень редкая клавиатура, вам может понадобиться настроить раскладку самостоятельно.

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

  • Скан код (scancode) - это низший уровень идентификации клавиши. Представляет из себя число, которое клавиатура посылает компьютеру.
  • Код клавиши (keycode) - это следующий уровень идентификации клавиши. Кейкод соответствует какой-то функции.
  • Символ клавиши (keysym) - это третий уровень идентификации клавиши. Он отвечает за символ. Он может зависеть от того, нажата ли клавиша Shift или была ли одновременно нажата какая-то другая клавиша-модификатор.

Скан кодам назначены коды клавиш, которым в свою очередь назначены символы клавиш, в зависимости от раскладки клавиатуры. Большинству ваших кнопок уже должны быть назначены коды клавиш, или, по крайней мере, скан коды. Клавиши без скан кодов не распознаны ядром; обычно это бывают дополнительные на 'игровых' клавиатурах.

В Xorg некоторым символам клавиш (например XF86AudioPlay, XF86AudioRaiseVolume) можно назначить действия (такие как запуск внешних приложений). Смотрите Extra keyboard keys in Xorg (Русский)#Присваивание кодов клавиш символам для дополнительной информации.

В консольном режиме некоторым символам клавиш (например от F1 до F246) могут быть назначены определённые действия (такие как переключение на другую консоль или печать последовательности символов). Смотрите Extra keyboard keys in console для дополнительной информации.

Идентификация кодов клавиш

Скан коды

С помощью showkey

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

# showkey --scancodes

и понажимайте клавиши на клавиатуре; вы должны увидеть скан коды на экране.

С помощью evtest

Для USB клавиатур, видимо, нужно использовать evtest из пакета evtest вместо showkey:[1]

# evtest /dev/input/event12
...
Event: time 1434666536.001123, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70053
Event: time 1434666536.001123, type 1 (EV_KEY), code 69 (KEY_NUMLOCK), value 0
Event: time 1434666536.001123, -------------- EV_SYN ------------

Используйте поле "value" из MSC_SCAN. В этом примере показано, что NumLock имеет сканкод 70053 и keycode 69.

С помощью dmesg

Примечание: Этот метод не показывает скан коды всех клавиш, он показывает их только для неизвестных клавиш.

Вы можете узнать скан код клавиши, нажав её и посмотрев вывод команды dmesg. Например, если у вас отображается такая строка:

Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0

значит, скан код нужной вам клавиши - 0xa0.

Коды клавиш

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

Режим консоли

В виртуальной консоли коды клавиш можно узнать утилитой showkey. showkey ждёт нажатия клавиш, и если нажатий нет в течение 10 секунд, выходит (это единственный способ выйти из программы) Чтобы работать с showkey, вы должны быть в виртуальной консоли, а не в графическом окружении. Выполните следующую команду:

# showkey --keycodes

и понажимайте клавиши на клавиатуре. Вы должны увидеть коды клавиш на экране.

Режим графики

В графическом режиме коды клавищ, используемые Xorg (Русский), можно узнать с помощью утилиты xev, которая поставляется в пакете xorg-xev. Разумеется, чтобы работать с xev, вы должны находиться в графическом окружении, а не в консоли.

Выполнив следующую команду, вы запустите xev с выводом только релевантной информации:

$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

Вот пример вывода:

38 a
27 r
54 c
43 h
153 NoSymbol
144 NoSymbol

В этом примере были нажаты клавиши a, r, c, h и две мультимедиа клавиши. Первым четырём клавишам с кодами клавиш 38, 27, 54 и 43 правильно назначены символы, а мультимедиа клавишам с кодами клавиш 153 и 144 - нет. Надпись NoSymbol означает, что этим клавишам не назначен символ клавиши.

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

$ xinit /usr/bin/xterm -- :1

Назначение скан кодов кодам клавиш

Смотрите основную статью: Map scancodes to keycodes.

Назначение кодов клавиш символам клавиш

В консольном режиме

Смотрите основную статью: Extra keyboard keys in console.

В графическом режиме

Смотрите основную статью: xmodmap (Русский).

Ноутбуки

Asus M series

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

# echo 1 > /sys/devices/platform/asus_laptop/ls_switch

Чтобы она выполнялась всегда при запуске, создайте Systemd tmpfile:

/etc/tmpfiles.d/local.conf
w /sys/devices/platform/asus_laptop/ls_switch - - - - 1
Примечание: Возможно, этот способ подойдёт и для других моделей ноутбуков Asus.

Asus N56VJ (возможно подойдёт и для других)

Если большинство специальных клавиш не работает, попробуйте погрузить модуль ядра asus-nb-wmi, с помощью команды:

# modprobe asus-nb-wmi

затем проверьте, заработали ли они с помощью xev. Если вы совмещаете этот способ с опцией загрузки acpi_osi="!Windows 2012", вы можете получить странные результаты в xev, поэтому постарайтесь не использовать её. Если это помоглоЮ сделайте модуль загружаемым автоматически, как описано в статье Модули ядра

Смотрите также