Налаштування мультимедійної клавіатури в Лінаксі
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Зміст |
Configuring Multimedia Keyboard in Linux
Це невеличке ЯКЦЕ базується на статті в "Linux Gazette" автора rakesh_arky
Трохи теорії
При натисканні клавіш клавіатура посилає їх коди (скан-коди). Точніше, посилає їх двічі, один раз при натисканні клавіші, другий раз - коли клавішу відпускають. Коди більшості клавіш стандартні, фіксовані. Але залишається ще залишок кодів. І їх використовують для додаткових клавіш. На них стандартів немає.
ЦЕЙ АБЗАЦ НЕТОЧНИЙ. ПОТІМ ПЕРЕРОБЛЮ. При натисненні клавіші Ікси отримують її скан-код. Звіряють його із списком відомих. Якщо він їм відомий, то далі генерується відповідне повідомлення, яке починає блукати системою у пошуках того, хто б його обробив. В іншому випадку нічого не відбувається, код нехтується.
Тепер практика
Всі операції проводимо під звичайним користувачем. Спочатку треба навчити ікси розуміти скан-коди.
Визначаємо скан-коди клавіатури:
$ xev 2>&1 >mykeys
Ця команда записує в файл всі події, що відбуваються з xev. Понатискайте потрібні клавіши у певному порядку.
$ grep 'keycode' mykeys | cut -d ' ' -f7,8 >mykeycodes
А ця команда витягує з файла keycodes коди і складає у mykeycodes.
tikus@mainframe:~$ cat mykeycodes keycode 178 keycode 178 keycode 236 keycode 236 keycode 164 keycode 164 keycode 162 keycode 162 keycode 144 keycode 144 keycode 153 keycode 153 keycode 160 keycode 160 keycode 174 keycode 174 keycode 176 keycode 176
Так виглядають мої. Тут кожен код зустрічається двічі.
Далі кожному коду має бути приписана назва. Список стандартних назв є в /usr/lib/X11/XKeysymDB. Для цього використовується команда xmodmap. Тут варто порекомендувати man xmodmap.
У мене все визначено таким чином:
/usr/X11R6/bin/xmodmap -e 'keycode 162 = XF86AudioPause' /usr/X11R6/bin/xmodmap -e 'keycode 174 = XF86AudioLowerVolume' /usr/X11R6/bin/xmodmap -e 'keycode 176 = XF86AudioRaiseVolume' /usr/X11R6/bin/xmodmap -e 'keycode 160 = XF86AudioMute' /usr/X11R6/bin/xmodmap -e 'keycode 178 = XF86WWW' /usr/X11R6/bin/xmodmap -e 'keycode 236 = XF86Mail' /usr/X11R6/bin/xmodmap -e 'keycode 164 = XF86AudioStop' /usr/X11R6/bin/xmodmap -e 'keycode 144 = XF86AudioPrev' /usr/X11R6/bin/xmodmap -e 'keycode 153 = XF86AudioNext'
Тепер перевіряємо правильність
$ xmodmap -pk | less
Напроти відповідних кодів мають стояти відповідні написи.
Для того, щоб все збереглося при завантаженні. Додати команди у файл, який виконується кожен раз при завантаженні користувача. У мене для цього підходить файл ~/.xsession.
tikus@mainframe:~$ tail -15 .xsession export CHARSET=koi8-u /usr/X11R6/bin/xmodmap -e 'keycode 162 = XF86AudioPause' /usr/X11R6/bin/xmodmap -e 'keycode 174 = XF86AudioLowerVolume' /usr/X11R6/bin/xmodmap -e 'keycode 176 = XF86AudioRaiseVolume' /usr/X11R6/bin/xmodmap -e 'keycode 160 = XF86AudioMute' /usr/X11R6/bin/xmodmap -e 'keycode 178 = XF86WWW' /usr/X11R6/bin/xmodmap -e 'keycode 236 = XF86Mail' /usr/X11R6/bin/xmodmap -e 'keycode 164 = XF86AudioStop' /usr/X11R6/bin/xmodmap -e 'keycode 144 = XF86AudioPrev' /usr/X11R6/bin/xmodmap -e 'keycode 153 = XF86AudioNext' # Start the window manager: exec /usr/bin/wmaker $NOCPP
Це частина мого файлу.
Перша частина налаштування закінчена.
Друга частина - це визначення операцій, які мають виконуватись при натисканні клавіши. Це можна зробити засобами менеджера вікон. Мій WindowMaker дозволяє налаштовувати запуск програм для комбінацій клавіш.
Наприклад xmms --play. Див. man xmms
FluxBox
Тут файл налаштувань має такий вигляд:
tikus@mainframe:~$ cat ~/.fluxbox/keys Mod1 Tab :NextWindow Mod1 Shift Tab :PrevWindow Mod1 F1 :Workspace 1 Mod1 F2 :Workspace 2 Mod1 F3 :Workspace 3 Mod1 F4 :Workspace 4 Mod1 F5 :Workspace 5 Mod1 F6 :Workspace 6 Mod1 F7 :Workspace 7 Mod1 F8 :Workspace 8 Mod1 F9 :Workspace 9 Mod1 F10 :Workspace 10 Mod1 F11 :Workspace 11 Mod1 F12 :Workspace 12
Mod4 r :ExecCommand aterm -shading 50 Mod4 d :ExecCommand stardict Mod4 x :ExecCommand xmms Mod4 v :ExecCommand gqview Mod4 g :ExecCommand gimp-2.2 Mod4 w :ExecCommand .firefox/firefox
None XF86AudioNext :ExecCommand xmms --fwd None XF86AudioPrev :ExecCommand xmms --rew None XF86AudioPause :ExecCommand xmms --play-pause None XF86AudioStop :ExecCommand xmms --stop None XF86AudioRaiseVolume :ExecCommand aumix -w+5 None XF86AudioLowerVolume :ExecCommand aumix -w-5
GNOME
Ви можете використовувати вбудований редактор прив'язок дій до комбінацій або дуже подібний до нього ACME .
Для всіх стільниць
Ви можете використовувати xbindkeys [1] та xbindkeys_config [2].
Все.
Андрій Головинський, tikus@(remove this)ukr.net

