Заметка про ещё один экзотический девайс и 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"Для автоматического применения запишем эти правила в ~/.xmodmaprc:
bash-2.05b$ xmodmap -e "add mod1 = Alt_L"
bash-2.05b$ xmodmap -e "add mod4 = Super_L"
!Очистим старые модификаторы:Запускать его следует так (можно прописать запуск например в ~/.xsession.d/):
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
bash-2.05b$ xmodmap $HOME/.xmodmaprcИ немного сcылок по теме:
Отличный how-to
Статья на Gentoo-wiki
Про ремапинг клавиш в целом
Настройка мультимедиаклавиш.
Запускаем xev и выясняем коды для мультимедиаклавиш, это 174, 176, 160 и 204 соответственно. Теперь замапим их соответствующим образом:bash-2.05b$ xmodmap -e "keycode 174 = XF86AudioLowerVolume"Замечу, что это стандартные иксовые идентификаторы для такого рода кнопок, поэтому например в IceWM они будут работать уже после рестарта оконного менеджера. Привожу строки из дефолтного конфига IceWM (для привязки клавиш в других оконных средах смотрите их доки):
bash-2.05b$ xmodmap -e "keycode 176 = XF86AudioRaiseVolume"
bash-2.05b$ xmodmap -e "keycode 160 = XF86AudioMute"
bash-2.05b$ xmodmap -e "keycode 204 = XF86Eject"
key "XF86AudioLowerVolume" aumix -v -5
key "XF86AudioRaiseVolume" aumix -v +5
key "XF86AudioMute" aumix -v 0
key "XF86Eject" eject
Ну и пропишем эти маппинги в ~/.xmodmaprc:
!Мультимедиа клавиши:Аналогично можно замапить и любые другие клавиши, например F13-F16.
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 160 = XF86AudioMute
keycode 204 = XF86Eject
UPD Актуальный .xmodmaprc:!Очистим старые модификаторы:
clear mod4
clear mod1
!Переназначим кнопки:
keycode 64 = Super_L
keycode 133 = Alt_L Meta_L
!keycode 134 = Alt_R Meta_R
keycode 108 = Super_R
!Правый альт -- Compose key:
keycode 134 = Multi_key
!Переназначим модификаторы:
add mod1 = Meta_L
add mod1 = Alt_L
add mod4 = Super_L
!F13-F16
keycode 191 = F13
keycode 192 = F14
keycode 193 = F15
keycode 194 = F16
!Мультимедиа клавиши (теперь работают из коробки):
!keycode 122 = XF86AudioLowerVolume
!keycode 123 = XF86AudioRaiseVolume
!keycode 121 = XF86AudioMute
!keycode 204 = XF86Eject
1 коммент.:
-
Анонимный
комментирует...
22 ноября 2009 г. в 03:50
Этот комментарий был удален администратором блога.
Подписаться на:
Комментарии к сообщению (Atom)