Как получить доступ уровня пользователя к нажатиям клавиш модификатора в консольном приложении?

То, что я рекомендую Вам, является Debian. Это стабильно и работает хорошо на большей части architechture.

У меня есть самостоятельно Debian на моем iBook G4 (жесткий диск на 30 ГБ, 256 МБ RAM), что могло использовать большую часть Вашей памяти, среда рабочего стола. Если Вы только просматриваете в Интернете, проверьте электронные письма, чат с некоторыми друзьями, Вы могли установить GNOME. Если Вам нужно больше памяти, я рекомендую Вам Fluxbox, это - легкая среда рабочего стола, но это не просто в использовании (не всегда удобный для пользователя).

Я попробовал Ubuntu, но это не так легко и стабильно как Debian... Но это более красиво :)

Это - Ваш личный выбор, это зависит от того, в чем Вы нуждаетесь.

5
19.01.2012, 09:47
2 ответа

Возможно, взгляните на libtermkey, терминальная ключевая входная библиотека, которая распознает специальные ключи (такие как клавиши со стрелками и функциональные клавиши), включая "измененные" ключи как Ctrl-Left.

Другая опция могла бы состоять в том, чтобы улучшить функциональность очарования, минимальной копии ncurses.

2
27.01.2020, 20:41

В терминале всегда было действительно трудно иметь этот вид информации. Можно только получить "код клавиши" и, конечно, это означает разные вещи в зависимости от того, какую комбинацию ОС, клавиатуры и терминала Вы используете.

Вы найдете полный список тех кодом клавиши на Вашей ОС с вызовом к xmodmap.

$ xmodmap -pke
keycode   9 = Escape NoSymbol Escape
keycode  10 = ampersand 1 ampersand 1 dead_caron dead_ogonek dead_caron dead_ogonek
keycode  11 = eacute 2 eacute 2 asciitilde Eacute asciitilde Eacute
[...]
keycode 244 = XF86Battery NoSymbol XF86Battery
keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
keycode 246 = XF86WLAN NoSymbol XF86WLAN
keycode 247 =

И список всех модификаторов оценивает с этим:

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Существует некоторая необработанная информация в terminfo базе данных или более полируется в ncurses API чтобы разработчикам системы справочной информации для преодоления этой путаницы.

Если можно снова использовать существующий исходный код как один нано, он должен сохранить Вас много времени. Смотрите на функцию "get_escape_seq_kbinput" для наблюдения то, что я имею в виду.

Если Вам просто нужна современная поддержка Linux, возможно, что вызов к keyname достаточно.

2
27.01.2020, 20:41
  • 1
    говорит или на сленге или на (n), проклятия в back.ncurses являются кодом монстра спагетти для борьбы через. затем существует также loadkeys и семейство - другой причудливый способ сделать вещи. (PS: нано специалисты по обслуживанию действительно помещают большую работу в него), –  slashmais 25.01.2012, 10:35

Теги

Похожие вопросы