|  | от alabal(15-08-2006)
 
 рейтинг (26)  
		[
  добре ]
		 [  зле ] 
 
  Вариант за отпечатване
 Как да настроим
 неподдържаните
 мултимедийни
 клавиши.
 
 Тази
 статия описва
 личния опит
 на автора при
 настройването
 на мултимедийни
 клавиши с помощта
 на програмите
 lineak или hotkeys под Debian.
 Тези две програми
 са лесни за
 използване
 и поддържат
 голям набор
 от готови за
 използване
 конфигурационни
 файлове за
 множество
 клавиатури,
 но разбира се
 не всички. Авторът
 попадна на
 най-тежкия
 случай на
 неподдържана
 мултимедийна
 клавиатура
 и по долу е
 представен
 неговия опит
 за решаване
 на този проблем.
 Статията не
 претендира
 за пълнота и
 изчерпателност. Вероятно в статията са
 допуснати
 грешки при
 използването
 на понятията,
 командите и
 изборът на
 скриптове.
 Всеки коментар,
 забележка или
 предложение
 ще бъде от полза.
 Описаните действия за настройка на клавишите в
 голямата си част не зависят от използваната дистрибуция. Разлики може
 да има в т.1 – инсталиране и т.5 – при избора на стартиращи скриптове и
 специфичните за всяка дистрибуция директории в които трябва да бъдат
 разположени тези скриптове. За инсталация от сорс – вж. статията
 на Мирослав Йорданов.
 За
 написването
 на статията
 са използвани
 основно man pages за
 lineakd и hotkeys, както и документацията
 на сайта на
 Lineak Project и конкретно
 Documentation:
 Keyboard support HOWTO.Други
 полезен източници
 който бяха
 неоценимо
 полезни бяха
 Gentoo Forums и споменатата
 статията
 на Мирослав Йорданов.
 
 Преди
 да започнем,
 няколко думи
 за двете тествани
 програми от
 автора програми
 – lineak и hotkeys. Сходството
 между тях е
 много голямо
 и като конфигурационни
 файлове, като
 възможности
 и действие. И
 двете нямат
 действащи
 графични
 конфигуратори.
 Единственото
 предимство
 за мен на lineak пред
 hotkeys беше по-доброто
 управление
 на командата
 -remote на mozilla и firefox. Това
 предимство
 е значимо, само
 ако използвате
 някой от тези
 браузъри и
 искате да отваряте
 определени
 страници с един
 клавиш.
 Освен
 всички плюсове,
 които открих
 от използването
 на мултимедийните
 клавиши се
 оказа, че освен
 осемте клавиша
 на моята клавиатура
 мога да събудя
 и добавя към
 тях всички
 останали „мъртви
 бутони“ - winmenu,
 winproperties и пр.
 
 И
 тъй:
 
 1.
 Някои
 характеристики:
 OS: Debian
 unstable, kernel-2.6.11, i686
 WM: Xfce4,
 GNOME
 Login
 Manager: GDM
 Клавиатура:
 Compaq kb-9963 (такъв бе
 заявения на
 гърба й модел,
 който последствие
 се оказа, че
 или не съответства
 или това е някаква
 странна модификация).
 Фирмените
 драйвери
 са всъщност
 софтуер предназначен
 за Windows, който работи
 като демон и
 не се отнася
 към специфичен
 модел клавиатура.
 (The Easy Access Keyboard – Software for Commercial Desktops.)
 
 2.
 Инсталация
 на lineak и/или hotkeys:
 apt-get
 update
 apt-get
 install lineakd lineak-xosdtplugin
 (apt-get
 install hotkeys)
 
 3.
 Първоначална
 настройка на
 клавиатурата:
 
 3.1.Списък с поддържани клавиатури
 lineakd -l
 (hotkeys -l)
 
 3.2. Задаване на клавиатура:
 lineakd -c
 CIK18g (hotkeys -t hp5181)
 Ако в списъка
 не откриете
 вашата клавиатура
 използвайте
 тази която е
 от същия производител
 и има най-много
 мултимедийни
 клавиши – шансът
 за съвпадения
 е много висок.
 Посочените
 са примерни
 и бяха тези
 които авторът
 използва.
 
 3.3. Конфигурация на клавиатурата:
 nano
 ~/.lineak/lineakd.conf (nano /etc/hotkeys.conf)
 И двата
 конфигурационни
 файла са достатъчно
 ясни. След редакцията
 lineakd.conf може да бъде
 копиран в /etc и
 да се използва
 като конфигурационен
 файл за всички
 потребители,
 но ако съществува
 .lineak/lineakd.conf в потребителската
 директория
 той ще бъде
 основния файл,
 а не този в /etc.
 Ако
 дотук всичко
 е наред и всички
 клавиши реагират
 – вие сте късметлии.
 Пуснете
 lineak -v (hotkeys – без опции)
 за да видите
 какво точно
 се случва.
 Ако
 нещата не са
 в ред и някои
 от мултимедийните
 клавиши не
 реагират, има
 два варианта:
 
 4. Разлика
 между клавишните
 кодове и дефинициите
 на lineak и hotkeys.
 
 4.1.Установяване на клавишните кодовете:
 
 В конзола
 напишете:
 xev
 и
 последователно
 натискайте
 мултимедийните
 клавиши. При
 натискане, ако
 късметът не
 ви е напуснал
 съвсем, ще видите
 нещо подобно:
 
 KeyRelease
 event, serial 29, synthetic NO, window 0x2800001,
 root
 0x8d, subw 0x0, time 4280397, (166,-17), root:(1259,36),
 state
 0x10, keycode 72 (keysym 0xffc3, F6), same_screen YES,
 XLookupString gives 0
 bytes: ""
 
 това
 което е необходимо
 е „ keycode 72“. Направете
 същото с всички
 клавиши които
 ви интересуват
 и записвате
 клавишните
 кодове (keycode).
 
 4.2. Промяна на дефинициите.
 nano
 /etc/lineakkb.def (nano /usr/share/hotkeys/hp5181.def)
 a) При
 lineakkb.def – просто
 копирате някоя
 секция за клавиатура
 и я пастирате
 на края на файла
 преди реда:
 #### END
 X-Tensions Keyboards ####
 Променяте
 [CIK18g] както желаете,
 например на
 [MINE] и също така
 [END CIK18g] на [END MINE]
 Срещу
 редовете записвате
 новите стойности
 на клавишните
 кодове, които
 получихте от
 xev.
 ВНИМАНИЕ!
 Клавишната
 комбинация
 съответства
 на очаквано
 действие от
 lineak – те са стандартни,
 така че използвайте
 точно такива
 каквито са
 записани във
 файла – не
 импровизирайте.
 После тези
 клавиши ще се
 появят в lineakd.conf с
 определеното
 им име и там
 вече може да
 им зададете
 каквито желаете
 команди.
 
 Например в lineakkb.def е възможно да имате следния ред:
 
 Shop = 178
 след lineakd -c MINE в
 ~/.lineak/lineakd.conf
 Ще се появи реда:
 Shop =
 и тук може да зададете
 каквато желаете команда, оградена в
 двойни кавички.
 
 б)
 При hotkeys – първо
 запишете файла
 hp5181.def под ново име,
 например mine.def в
 /usr/share/hotkeys/ след което
 го редактирайте
 по подобен
 начин, като
 запишете новите
 клавишни кодове.
 
 След
 което изпълнете:
 lineakd -c
 MINE (hotkeys -t mine)
 и
 настройте
 действията
 на клавиатурата.
 
 И
 така стигаме
 до най-тежкия
 вариант:
 
 5.Липса
 на клавишни
 кодове.
 5.1.
 Присвояване
 на кодове на
 неизвестните
 клавиши.
 Ако
 xev не реагира
 колкото и да
 натискате
 мултимедийните
 клавиши, преминете
 в конзола и
 като роот напишете:
 dmesg
 ако
 клавишите ви
 нямат кодове
 ще видите нещо
 като това:
 
 atkbd.c:
 Unknown key pressed (translated set 2, code 0x93 on isa0060/serio0).
 atkbd.c:
 Use 'setkeycodes e013 ' to make it known.
 atkbd.c:
 Unknown key released (translated set 2, code 0x93 on isa0060/serio0).
 atkbd.c:
 Use 'setkeycodes e013 ' to make it known.
 
 В
 такъв случай
 трябва да отворите
 файла /usr/include/linux/input.h и
 сами да установите
 какви кодове
 са ви необходими.
 Например за
 клавиша, който
 би трябвало
 да управлява
 браузъра, редът
 за него ще изглежда
 така:
 #define
 KEY_WWW 150
 за
 мейл-клиента:
 #define
 KEY_MAIL 155 и т.н.
 
 Сега
 трябва кодовете
 да бъдат зададени
 за съответния
 клавиш:
 setkeycodes
 e013 150
 setkeycodes
 e014 155
 
 След
 като зададете
 клавишните
 кодове трябва
 да се върнете
 към xev (да го напишете
 отново в конзола)
 и да видите
 какъв е keycode за
 съответния
 клавиш. Ако
 отново не получавате
 keykode означва, че
 грешно сте
 въвели първите
 кодове (е013) в
 setkeykodes. Запишете
 всички числа,
 по начин по
 който по-късно
 ще можете да
 се ориентирате
 кое какво е. Те са три за
 всеки клавиш
 – две за setkeykodes и едно
 за keycode от xev (този
 код е се използва
 от X-са).
 
 Повторете
 упражнението
 със setkeykodes за всички
 клавиши. Ако
 сте си свършили
 добре работата
 при dmesg няма да
 получавате
 повече съобщения
 за грешки.
 
 Ето как се получи при мен:
 
 (клавишите които нямаха кодове)
 setkeycodes
 e023 150
 setkeycodes
 e01f 157
 setkeycodes
 e01a 217
 setkeycodes
 e01e 215
 setkeycodes
 e013 216
 setkeycodes
 e014 164
 setkeycodes
 e015 163
 setkeycodes
 e01b 165
 
 (моята клавиатура в
 lineakkb.def)
 
 [MINE]
 brandname = "Compaq"
 modelname = "IK"
 [KEYS]
 Play = 162
 Previous = 144
 Next = 153
 Mail = 120
 Communities = 121
 Internet = 178
 Search = 229
 Go = 235
 VolumeDown = 78
 Mute = 111
 VolumeUp = 110
 LWindows = 115
 RWindows = 116
 Properties = 117
 [END KEYS]
 [END MINE]
 
 (част от lineakd.conf)
 
 Communities = "gaim"
 Go = "nautilus --browser
 --no-desktop"
 Internet = "firefox"
 Mail = "mozilla-thunderbird"
 Mute = EAK_MUTE
 Next = "beep-media-player
 --fwd"
 Play = "beep-media-player
 --play-pause"
 Previous = "beep-media-player
 --rew"
 Search = "firefox -remote
 'OpenUrl(http://linux-bg,new-tab)'"
 VolumeDown = EAK_VOLDOWN
 VolumeUp = EAK_VOLUP
 LWindows = "firefox -remote
 'OpenUrl(about:blank,new-tab)'"
 Properties = "xchat"
 RWindows = "gnome-terminal"
 
 *Забележка
 – левия,
 десния уиндоуски
 бутони, както
 и т.нар. бутон
 properties са стандартни
 и и имат кодове
 115, 116 и 110. За намаляване,
 увеличаване
 и mute използвам
 Print Scrn, Scroll Lock и Pause/ Break – съответно
 111, 78, 110. Останалите
 осем бутона
 са откровено
 мултимедийни
 и нямаха присвоен
 код.
 
 5.2. Запис на кодовете.
 Сега
 е необходимо
 да запишете
 кодовете (keycode) в
 lineakkb.def (или /usr/share/hotkeys/mine.def),
 както бе описано
 в т.4.2.
 Стартирайте
 lineak (hotkeys) и вижте дали
 клавишите вече
 работят. Би
 трябвало да
 го правят, ако
 не – вероятно
 сте объркали
 някое число
 – можете да
 разберете като
 пуснете:
 lineakd -v
 (hotkeys)
 
 5.3. Въвеждане на setkeycodes при
 стартиране.
 За
 да не се налага
 всеки път да
 пишете между
 10 и 20 пъти setkeycodes е
 необходимо
 те да бъдат
 записани в
 скрипт изпълним
 при стартиране.
 Според man lineakd е
 достатъчно
 те да бъдат
 записани в
 някой стартиращ
 скрипт. Аз
 предпочетох
 да направя
 отделен, който
 изглежда така:
 
 cat
 /etc/init.d/compaq
 #!
 /bin/bash
 
 setkeycodes
 e023 150
 setkeycodes
 e01f 157
 setkeycodes
 e01a 217
 setkeycodes
 e01e 215
 setkeycodes
 e013 216
 setkeycodes
 e014 164
 setkeycodes
 e015 163
 setkeycodes
 e01b 165
 
 След
 което трябва
 да се изпълни:
 chmod +x
 /etc/init.d/compaq
 update-rc.d
 compaq default (ако искате
 да видите къде
 ще го добави
 - update-rc.d -n compaq default).
 
 След
 това последно
 усилие би трябвало
 да имате напълно
 работеща мултимедийна
 клавиатура.
 
 Остава
 само да добавите
 (ако желаете)
 демона в стартиращия
 процес – задължително
 след стартирането
 на X.
 Решението
 което проработи
 при мен беше
 добавянето
 на следния
 скрипт в
 /etc/X11/Xsession.d (в Gentoo директорията е /etc/X11/xinit/):
 
 cat
 /etc/X11/Xsession.d/56lineakd
 #!/bin/bash
 lineakd &
 
 И
 трябва да изпълните:
 chmod +x
 /etc/X11/Xsession.d/56lineakd
 
 Ако
 всичко е минало
 нормално вие
 разполагате
 с мултимедийна
 клавиатура.
 
 Lineak и
 hotkeys предлагат
 допълнителни
 възможности,
 чието описание
 остана извън
 обхвата на
 статията –
 т.нар. Toggable key и Modifiers, които
 дава възможност
 за допълнителни
 настройки и
 добавяне на
 псевдо мултимедийни
 клавиши чрез
 модифициране
 (или иначе казано
 клавишни комбинации)
 на вече съществуващите
 чрез shift, alt и control. Извън
 обхвата останаха
 и макросите
 EAK които предлагат
 още допълнителна
 функционалност
 за контрол на
 софтуера, звуковата
 и видео картата
 и др.
 
 По време на настройкта на клавиатурата се питах дали има смисъл от
 всичко, това - търсене на кодове, скриптове и пр. След като всичко
 заработи - за мен отговора е "да, определено" - освен приятно
 изненадващите всички около вас зелени съобщения (и техния цвят може да
 бъде променен) по монитора, новите клавиши спестяват време и нерви.
 И един последен съвет - направете си backup на новосъздадените и
 променените файлове - за всеки случай.
 
 
 
 ....
 
 
  << DC++ За Линукс | Инсталация на Postfix Admin с поддръжка на PostgreSQL >>
 |  |