воскресенье, 16 января 2005 г.

Настройка мультимедийной клавы в консоли.

История началась тогда, када купил я себе, почти мультимедийную клаву, тоесть 3 мультимедийных кнопки (Power, Sleep, Wake). Продолжилась тем, что я решил их заюзать. Значит настроить эти кнопочки в иксах труда особого не составило. А вот консоль... Консоль заставила почитать несколько манов :)
Итак.. приступим :)
Шаг первый.
С помощью команды showkey получаем скан коды наших клавиш.
Я, в ниже проилюстрированном примере, получил скан коды клавиш Wake, Sleep, Power соответственно.
Elvenhome root # showkey -s
режим клавиатуры был XLATE

нажмите на клавишу 'any' (она на системном блоке)...
Программа завершается после 10 секунд 'покоя' (не нажимается ни одна клавиша)
0xe0 0x63 0xe0 0xe3 //Первых две позиции - клавиша нажата, следующих две отпущена.
0xe0 0x5f 0xe0 0xdf //аналочично.
0xe0 0x5e 0xe0 0xde //аналогично.

А теперь попробуй те запустить туже программу только с ключиком -k. Не пугайтесь, программа ничего не выдаст, так и должно быть. И так у нас есть скан коды, но что же с ними делать? Как что?
Шаг второй.
Нужно назначить им соответствующие клавишные коды, с помощью команды setkeycodes.
Внимание важно!
Клавишных кодов есть всего 127. Это заложено в ядре. По-этому, нужно глянуть в файл вашей текущей раскладки клавиатуры(у меня он лежит в /usr/share/keymaps/i386/qwerty/) и посмотреть есть ли там свободные места. Там также можегут быть расписаны все клавиши, но они могут не иметь никакого значения. Также не пытайтесь ничего записать на нулевую позицию.

Elvenhome root # setkeycodes e063 122
Elvenhome root # setkeycodes e05f 123
Elvenhome root # setkeycodes e05e 124

Я назначил каждой клавише по клавишному коду. Теперь можете запустить, уже извесную вам, команду showkey -k и посмотреть результат. :) Но и это еще не все.
Шаг третий.
Открываем на редактирование файл вашей текужей раскладки и дописываем в него следующе:
...
keycode 122 = Decr_Console
keycode 123 = Incr_Console
keycode 124 = F13
string F13 = "/sbin/shutdown -h now\n"

Если вы самостоятельно дописывали строку keycode, может быть случай, что она там уже есть, то старайтесь выровнять ее с вышенаписанной токойже строкой.
Поясню, что я написал. Я повесил на клавишу Wake переключени консолей (на одну назад), а на клавишу Sleep переключение кончолей на одну вперед. Теперь самая изюминка. Так как на наших клавах нет клавиш F13, F14 (и так далее), то мы можем использовать эти клавищи как 'переменные'(наверно можно создать и свою 'переменную' но я не стал на этом зацикливаться). Значит я присвоил клавише F13 строчку '/sbin/shutdown -h now\n'(симлом \n означает перевод строки, а в данном случае заменяет Enter), а потом клавише Power присвоил значение клавиши F13. Не забудьте в конче файла оставить пустую строку.
Теперь надо загрузить нашу раскладку:
Elvenhome root # loadkeys /usr/share/keymaps/i386/qwerty/ru-ms.map.gz

Все теперь наслаждайтесь своей работой. Если у вас что-то не получилось, вернитесь к шагу 1.
P.S. насладжаться вы будете до первой перезагрузки. Как же так скажете вы? А вот так :)
Нужно записать все команды setkeycodes в какой-то загрузочный скрипт, для гентульменов я рекомендую все это дело засунуть в /etc/conf.d/local.start
Удачи и приятного освоения консоли!!!