UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

175 lines (107 loc) 16 kB
**Состояние перевода:** На этой странице представлен перевод статьи [Extra keyboard keys](/index.php/Extra_keyboard_keys "Extra keyboard keys"). Дата последней синхронизации: 2015-06-29\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Extra_keyboard_keys&diff=0&oldid=379429). На многих клавиатурах есть *специальные клавиши* (их иногда называют *горячими клавишами* или *мультимедиа клавишами*), которые сделаны для того, чтобы запускать приложения или печатать специальные символы (которые не назначены на стандартной национальной раскладке). [udev (Русский)](/index.php/Udev_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Udev (Русский)") содержит в себу большую базу данных назначений клавиш, соответствующих конкретным клавиатурам, поэтому чаще всего клавиатуры работают из коробки. Если у вас очень новая или очень редкая клавиатура, вам может понадобиться настроить раскладку самостоятельно. Также вы можете изменить раскладку клавиатуры для того, чтобы система воспринимала клавиши как-то иначе, чем сейчас. Существует три уровня идентификации клавиши: * [Скан код (scancode)](https://en.wikipedia.org/wiki/ru:%D0%A1%D0%BA%D0%B0%D0%BD-%D0%BA%D0%BE%D0%B4 "wikipedia:ru:Скан-код") - это низший уровень идентификации клавиши. Представляет из себя число, которое клавиатура посылает компьютеру. * **Код клавиши (keycode)** - это следующий уровень идентификации клавиши. Кейкод соответствует какой-то функции. * **Символ клавиши (keysym)** - это третий уровень идентификации клавиши. Он отвечает за *символ*. Он может зависеть от того, нажата ли клавиша Shift или была ли одновременно нажата какая-то другая [клавиша-модификатор](https://en.wikipedia.org/wiki/Modifier_key "wikipedia:Modifier key"). *Скан кодам* назначены *коды клавиш*, которым в свою очередь назначены *символы клавиш*, в зависимости от раскладки клавиатуры. Большинству ваших кнопок уже должны быть назначены *коды клавиш*, или, по крайней мере, *скан коды*. Клавиши без *скан кодов* не распознаны ядром; обычно это бывают дополнительные на 'игровых' клавиатурах. В Xorg некоторым *символам клавиш* (например `XF86AudioPlay`, `XF86AudioRaiseVolume`) можно назначить действия (такие как запуск внешних приложений). Смотрите [Extra keyboard keys in Xorg (Русский)#Присваивание кодов клавиш символам](/index.php/Extra_keyboard_keys_in_Xorg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.9F.D1.80.D0.B8.D1.81.D0.B2.D0.B0.D0.B8.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0.D0.BC "Extra keyboard keys in Xorg (Русский)") для дополнительной информации. В консольном режиме некоторым *символам клавиш* (например от `F1` до `F246`) могут быть назначены определённые действия (такие как переключение на другую консоль или печать последовательности символов). Смотрите [Extra keyboard keys in console](/index.php/Extra_keyboard_keys_in_console "Extra keyboard keys in console") для дополнительной информации. ## Contents * [1 Идентификация кодов клавиш](#.D0.98.D0.B4.D0.B5.D0.BD.D1.82.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.86.D0.B8.D1.8F_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88) * [1.1 Скан коды](#.D0.A1.D0.BA.D0.B0.D0.BD_.D0.BA.D0.BE.D0.B4.D1.8B) * [1.1.1 С помощью showkey](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_showkey) * [1.1.2 С помощью evtest](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_evtest) * [1.1.3 С помощью dmesg](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_dmesg) * [1.2 Коды клавиш](#.D0.9A.D0.BE.D0.B4.D1.8B_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88) * [1.2.1 Режим консоли](#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.D0.BA.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D0.B8) * [1.2.2 Режим графики](#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.D0.B3.D1.80.D0.B0.D1.84.D0.B8.D0.BA.D0.B8) * [2 Назначение скан кодов кодам клавиш](#.D0.9D.D0.B0.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BA.D0.B0.D0.BD_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BE.D0.B4.D0.B0.D0.BC_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88) * [3 Назначение кодов клавиш символам клавиш](#.D0.9D.D0.B0.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0.D0.BC_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88) * [3.1 В консольном режиме](#.D0.92_.D0.BA.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D1.8C.D0.BD.D0.BE.D0.BC_.D1.80.D0.B5.D0.B6.D0.B8.D0.BC.D0.B5) * [3.2 В графическом режиме](#.D0.92_.D0.B3.D1.80.D0.B0.D1.84.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.BC_.D1.80.D0.B5.D0.B6.D0.B8.D0.BC.D0.B5) * [4 Ноутбуки](#.D0.9D.D0.BE.D1.83.D1.82.D0.B1.D1.83.D0.BA.D0.B8) * [4.1 Asus M series](#Asus_M_series) * [4.2 Asus N56VJ (возможно подойдёт и для других)](#Asus_N56VJ_.28.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE_.D0.BF.D0.BE.D0.B4.D0.BE.D0.B9.D0.B4.D1.91.D1.82_.D0.B8_.D0.B4.D0.BB.D1.8F_.D0.B4.D1.80.D1.83.D0.B3.D0.B8.D1.85.29) * [5 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5) ## Идентификация кодов клавиш ### Скан коды #### С помощью showkey Традиционный способ узнать *скан код* - воспользоваться утилитой *showkey*. *showkey* ожидает нажатия клавиши, или выходит, если не было нажатий в течение 10 секунд. Чтобы работать с *showkey*, вы должны быть в [виртуальной консоли](https://en.wikipedia.org/wiki/ru:%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C "wikipedia:ru:Виртуальная консоль"), а не в графическом окружении или работать, залогинившись по сети. Выполните следующую команду: ``` # showkey --scancodes ``` и понажимайте клавиши на клавиатуре; вы должны увидеть *скан коды* на экране. #### С помощью evtest Для USB клавиатур, видимо, нужно использовать *evtest* из пакета [evtest](https://www.archlinux.org/packages/?name=evtest) вместо *showkey*:[[1]](https://ask.fedoraproject.org/en/question/46201/how-to-map-scancodes-to-keycodes/) ``` # 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`. ### Коды клавиш **Важно:** Обратите внимание, что *коды клавиш* различаются в консольном и графическом режимах. Используйте соответствующую утилиту, чтобы узнать нужное значение. #### Режим консоли В [виртуальной консоли](https://en.wikipedia.org/wiki/ru:%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C "wikipedia:ru:Виртуальная консоль") *коды клавиш* можно узнать утилитой *showkey*. *showkey* ждёт нажатия клавиш, и если нажатий нет в течение 10 секунд, выходит (это единственный способ выйти из программы) Чтобы работать с *showkey*, вы должны быть в виртуальной консоли, а не в графическом окружении. Выполните следующую команду: ``` # showkey --keycodes ``` и понажимайте клавиши на клавиатуре. Вы должны увидеть *коды клавиш* на экране. #### Режим графики В графическом режиме *коды клавищ*, используемые [Xorg (Русский)](/index.php/Xorg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Xorg (Русский)"), можно узнать с помощью утилиты *xev*, которая поставляется в пакете [xorg-xev](https://www.archlinux.org/packages/?name=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](/index.php/Map_scancodes_to_keycodes "Map scancodes to keycodes"). ## Назначение кодов клавиш символам клавиш ### В консольном режиме Смотрите основную статью: [Extra keyboard keys in console](/index.php/Extra_keyboard_keys_in_console "Extra keyboard keys in console"). ### В графическом режиме Смотрите основную статью: [xmodmap (Русский)](/index.php/Xmodmap_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Xmodmap (Русский)"). ## Ноутбуки ### Asus M series Чтобы контролировать индикатор освещения и мультимедиа клавиши на вашем ноутбуке Asus, вы должны использовать следующую команду: ``` # echo 1 > /sys/devices/platform/asus_laptop/ls_switch ``` Чтобы она выполнялась всегда при запуске, создайте [Systemd tmpfile](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.92.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D1.8B "Systemd (Русский)"): `/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, поэтому постарайтесь не использовать её. Если это помоглоЮ сделайте модуль загружаемым автоматически, как описано в статье [Модули ядра](/index.php/Kernel_modules_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Kernel modules (Русский)") ## Смотрите также * [Enabling Keyboard Multimedia Keys](http://wiki.linuxquestions.org/wiki/Configuring_keyboards#Enabling_Keyboard_Multimedia_Keys) - guide on LinuxQuestions wiki * [Multimedia Keys](http://www.gentoo-wiki.info/HOWTO_Use_Multimedia_Keys) on [Gentoo Wiki Archives](http://www.gentoo-wiki.info/)