Обработка клавиатуры в консоли

Здесь обсуждаются все вопросы, не попадающие под другие категории
Аватара пользователя
Captain Flint
Увлекающийся
Сообщения: 82
Зарегистрирован: 02 дек 2002, 18:54

Обработка клавиатуры в консоли

Сообщение Captain Flint »

Уважаемые господа!

У меня клава с тремя дополнительными кнопками ("засыпание", "пробуждение", "выключение"). Как их заставить работать по назначению? Или, что удобнее, как в ответ на нажатие нужной клавиши выполнить свои действия? У меня Debian, иксами не пользуюсь.

tungus
Интересующийся
Сообщения: 44
Зарегистрирован: 11 авг 2002, 04:19

Сообщение tungus »

Можно сделать так
Определить сканкоды с помощью с помощью 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.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Captain Flint, для начала научить комп засыпать и просыпаться. Затем см. acpid - он как раз должен обрабатывать эти кнопки.
Опыт растет прямо пропорционально выведенному из строя оборудованию

tungus
Интересующийся
Сообщения: 44
Зарегистрирован: 11 авг 2002, 04:19

Сообщение tungus »

> Затем см. acpid - он как раз должен обрабатывать эти кнопки.

acpid для обработки кнопок на блоке питания, а не клавиатуре

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

tungus, он обрабатывает по-моему ACPI-события, а не коды клавиш - за соответсвие одного другому отвечает ядро или бивис - что точно - не скажу.
Опыт растет прямо пропорционально выведенному из строя оборудованию

tungus
Интересующийся
Сообщения: 44
Зарегистрирован: 11 авг 2002, 04:19

Сообщение tungus »

> tungus, он обрабатывает по-моему ACPI-события, а не коды клавиш.

Ты прав, но на десктопе из полезного через acpid можно прикрутить только кнопку на блоке питания. На лаптопе по-моему ещё можно прикрутить что-нибудь типа делать suspend при закрытии крышки.

Но нажатие кнопок на клавиатуре не относится к acpi событиям.

Аватара пользователя
Captain Flint
Увлекающийся
Сообщения: 82
Зарегистрирован: 02 дек 2002, 18:54

Сообщение Captain Flint »

Огромное спасибо за детальную информацию. Буду разбираться.

Ответить