Ключевые слова:keyboard, linux, usb, rus, x11, xorg, xmodmap, (найти похожие документы)
From: Сергей Вольхин <volhin@bk.ru.>
Newsgroups: email
Date: Mon, 24 Oct 2007 14:31:37 +0000 (UTC)
Subject: Подключение Apple USB Keyboard в Linux.
Клавиатура от яблочников без труда определяется более-менее современным
PC ещё на уровне bios, в Linux же без дополнительных телодвижений
подхватывается стандартным "USB HID" драйвером. Печатать, и даже
по-русски, уже можно =)
И что самое главное, подхватываются и нестандартные клавиши: xev
реагирует например на нажатие клавиши повышения громкости и возвращает
keycode:
KeyRelease event, serial 30, synthetic NO, window 0xe00001,
root 0x9f, subw 0x0, time 806958, (-515,533), root:(576,561),
state 0x10, keycode 176 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
Теперь о том, что собственно подлежит настройке.
Поставим Alt на место.
Наверно самым неудобным (а скорее непривычным) кажется расположение
клавиш "Alt", которые помещены непосредственно рядом с "Ctrl", так что
естественным будет желание поменять их местами с "command" (кнопками с
изображениями яблок).
Посмотрим модификаторы (альты, меты и проч.) по умолчанию:
bash-2.05b$ xmodmap -pm
xmodmap: up to 3 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_L (0x7d), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x7f), Hyper_L (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)
И посмотрим маппинг нужных нам клавиш по умолчанию:
bash-2.05b$ xmodmap -pke | grep Alt ; xmodmap -pke | grep Super
keycode 64 = Alt_L Meta_L
keycode 113 = Alt_R Meta_R
keycode 125 = NoSymbol Alt_L
keycode 115 = Super_L
keycode 116 = Super_R
keycode 127 = NoSymbol Super_L
Очистим старые модификаторы:
bash-2.05b$ xmodmap -e "clear mod4"
bash-2.05b$ xmodmap -e "clear mod1"
Переназначим кнопки:
bash-2.05b$ xmodmap -e "keycode 64 = Super_L"
bash-2.05b$ xmodmap -e "keycode 115 = Alt_L Meta_L"
bash-2.05b$ xmodmap -e "keycode 113 = Super_R"
bash-2.05b$ xmodmap -e "keycode 116 = Alt_R Meta_R"
Переназначим модификаторы:
bash-2.05b$ xmodmap -e "add mod1 = Meta_L"
bash-2.05b$ xmodmap -e "add mod1 = Alt_L"
bash-2.05b$ xmodmap -e "add mod4 = Super_L"
Для автоматического применения запишем эти правила в ~/.xmodmaprc:
!Очистим старые модификаторы:
clear mod4
clear mod1
!Переназначим кнопки:
keycode 64 = Super_L
keycode 115 = Alt_L Meta_L
keycode 113 = Super_R
keycode 116 = Alt_R Meta_R
!Переназначим модификаторы:
add mod1 = Meta_L
add mod1 = Alt_L
add mod4 = Super_L
Запускать его следует так (можно прописать запуск например в ~/.xsession.d/):
bash-2.05b$ xmodmap $HOME/.xmodmaprc
И немного сcылок по теме:
http://hansmi.ch/articles/apple-keyboard-with-linuxhttp://gentoo-wiki.com/HARDWARE_Apple_MacBook#Apple_Keyboard
http://www.columbia.edu/%7Edjv/docs/keyremap.html
Настройка мультимедиаклавиш.
Запускаем xev и выясняем коды для мультимедиаклавиш, это 174, 176, 160 и
204 соответственно. Теперь замапим их соответствующим образом:
bash-2.05b$ xmodmap -e "keycode 174 = XF86AudioLowerVolume"
bash-2.05b$ xmodmap -e "keycode 176 = XF86AudioRaiseVolume"
bash-2.05b$ xmodmap -e "keycode 160 = XF86AudioMute"
bash-2.05b$ xmodmap -e "keycode 204 = XF86Eject"
Замечу, что это стандартные иксовые идентификаторы для такого рода
кнопок, поэтому например в IceWM они будут работать уже после рестарта
оконного менеджера. Привожу строки из дефолтного конфига IceWM (для
привязки клавиш в других оконных средах смотрите их доки):
key "XF86AudioLowerVolume" aumix -v -5
key "XF86AudioRaiseVolume" aumix -v +5
key "XF86AudioMute" aumix -v 0
key "XF86Eject" eject
Ну и пропишем эти маппинги в ~/.xmodmaprc:
!Мультимедиаклавиши:
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 160 = XF86AudioMute
keycode 204 = XF86Eject
Аналогично можно замапить и любые другие клавиши, например F13-F16.
Оригинал статьи здесь: http://damnsmallblog.blogspot.com/2007/07/apple-usb-keyboard-linux.html