Обработка клавиатуры в консоли
- Captain Flint
- Увлекающийся
- Сообщения: 82
- Зарегистрирован: 02 дек 2002, 18:54
Обработка клавиатуры в консоли
Уважаемые господа!
У меня клава с тремя дополнительными кнопками ("засыпание", "пробуждение", "выключение"). Как их заставить работать по назначению? Или, что удобнее, как в ответ на нажатие нужной клавиши выполнить свои действия? У меня Debian, иксами не пользуюсь.
У меня клава с тремя дополнительными кнопками ("засыпание", "пробуждение", "выключение"). Как их заставить работать по назначению? Или, что удобнее, как в ответ на нажатие нужной клавиши выполнить свои действия? У меня Debian, иксами не пользуюсь.
Можно сделать так
Определить сканкоды с помощью с помощью showkey из console-tools.
У меня например:
#showkey -s
0xe0 0x63
0xe0 0xe3
0xe0 0x5f
0xe0 0xdf
0xe0 0x5e
0xe0 0xde
Сответственно на три кнопки управления питанием приходится 6 сканкодов -
один на нажатие, один на отпускание.
Далее открывается keymap ( у меня /lib/kbd/keymaps/ru.kmap.gz и смотрятся свободные
кейкоды. Например:
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =AltGr
keycode 127 =AltGr_Lock
Т. е. свободные кейкоды у меня например 122, 123, 124. Далее надо установить
к сканкодам соответственные кейкоды, например я в /etc/init.d/keytable добавил:
/usr/bin/setkeycodes e05e 124
/usr/bin/setkeycodes e05f 123
/usr/bin/setkeycodes e063 122
Далее внимательно читается man inittab - секции ctrlaltdel и kbrequest. Потом
keymap можно изменить на:
keycode 122 = Boot
keycode 123 = Boot
keycode 124 = KeyboardSignal
А в /etc/inittab добавить строку ( у меня ядро с apm):
pf::kbrequest:/usr/bin/apm -S
Далее
/sbin/telinit -q
/etc/init.d/keytable restart
В этой конфигурации фактически две кнопки, а третья повторяет одну из первых двух.
По-моему, назначить все три кнопки на разные действия нельзя, если не патчить ядро и
init.
Определить сканкоды с помощью с помощью showkey из console-tools.
У меня например:
#showkey -s
0xe0 0x63
0xe0 0xe3
0xe0 0x5f
0xe0 0xdf
0xe0 0x5e
0xe0 0xde
Сответственно на три кнопки управления питанием приходится 6 сканкодов -
один на нажатие, один на отпускание.
Далее открывается keymap ( у меня /lib/kbd/keymaps/ru.kmap.gz и смотрятся свободные
кейкоды. Например:
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =AltGr
keycode 127 =AltGr_Lock
Т. е. свободные кейкоды у меня например 122, 123, 124. Далее надо установить
к сканкодам соответственные кейкоды, например я в /etc/init.d/keytable добавил:
/usr/bin/setkeycodes e05e 124
/usr/bin/setkeycodes e05f 123
/usr/bin/setkeycodes e063 122
Далее внимательно читается man inittab - секции ctrlaltdel и kbrequest. Потом
keymap можно изменить на:
keycode 122 = Boot
keycode 123 = Boot
keycode 124 = KeyboardSignal
А в /etc/inittab добавить строку ( у меня ядро с apm):
pf::kbrequest:/usr/bin/apm -S
Далее
/sbin/telinit -q
/etc/init.d/keytable restart
В этой конфигурации фактически две кнопки, а третья повторяет одну из первых двух.
По-моему, назначить все три кнопки на разные действия нельзя, если не патчить ядро и
init.
> tungus, он обрабатывает по-моему ACPI-события, а не коды клавиш.
Ты прав, но на десктопе из полезного через acpid можно прикрутить только кнопку на блоке питания. На лаптопе по-моему ещё можно прикрутить что-нибудь типа делать suspend при закрытии крышки.
Но нажатие кнопок на клавиатуре не относится к acpi событиям.
Ты прав, но на десктопе из полезного через acpid можно прикрутить только кнопку на блоке питания. На лаптопе по-моему ещё можно прикрутить что-нибудь типа делать suspend при закрытии крышки.
Но нажатие кнопок на клавиатуре не относится к acpi событиям.
- Captain Flint
- Увлекающийся
- Сообщения: 82
- Зарегистрирован: 02 дек 2002, 18:54