Автор статьи: Дата: 26.02.2005
История началась тогда, када купил я себе, новую клаву, то есть на ней было аж 3 новых кнопки (Power, Sleep, Wake). Продолжилась тем, что я решил их заюзать. Значит настроить эти кнопочки в иксах труда особого не составило. А вот консоль... Консоль заставила почитать несколько манов :)
Были прочитаны следующие маны:
setkeycodes (8), dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8), keymaps(5)
Итак, приступим. :)
Важно: Вы спросите почему настройка мультимедийной клавы, да потому что все это применимо и к мультимедийным клавишам.
Шаг первый.
С помощью команды 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. Это заложено в ядре. Поэтому, нужно глянуть в файл Вашей текущей раскладки клавиатуры (у меня используется раскладка ms-ru.map, файл которой лежит в /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.
Будьте внимательны! Если Вы находитесь, например, в редакторе vi, то при нажатии клавиши Power у Вас в редакторе появится строка:
/sbin/shutdown -h now
Причем курсор переведется на новую строку. То есть чтоб компьютер выключился, надо находиться непостредственно в командной строке. Переключение консолей работает независимо от того, что у Вас запущено, будь то vi или mp3vlaster.
Шаг червертый.
Наслаждаться Вы будете до первой перезагрузки. Как же так скажете вы? А вот так :)
Нужно записать все команды setkeycodes в какой-нибудь загрузочный скрипт, для гентульменов я рекомендую все это дело засунуть в /etc/conf.d/local.start
Удачи и приятного освоения консоли!!!
P.S. © /me
Оригинал на блоге
|