Еще одна идея: можно использовать нормальный Живой CD без персистентного устройства хранения данных и использовать онлайн-сервис как http://www.delicious.com/ или http://www.google.com/bookmarks/ для отслеживания любимые страницы.
Если Вы собираетесь быть чтением из stdin
, необходимо прочитать страницу справочника для tcsetattr
, и конкретно раздел о ‘Каноническом и неканоническом режиме’ (ICANON
). Если Вы не отключаете ICANON
на stdin
, вход ориентирован на строку (Вы ничего не получаете, пока Не Входят, нажимается). Это имеет место даже для O_NONBLOCK
.
Если в сомнении, strace -v stty raw >&log; stty sane; grep TCSETSW log
и посмотрите то, к чему это делает stdin
. Можно использовать тот же системный вызов с идентичными параметрами для неприготовления терминала. Будьте осторожны, если Вы не восстановите настройки на выходе, терминал будет бесполезен после того, как Ваша программа завершается. (это - то, почему я сделал stty sane
после stty raw
)
Используя необработанные аппаратные средства ввод-вывод является, вероятно, очень плохой идеей, если Вы не абсолютно уверены в своих целевых аппаратных средствах, и/или Вы хотите ожидать каждый тип клавиатуры существует.
О, несмотря на него являющийся 'сырыми данными', Вы все еще читаете несколько приготовленный вход из клавиатуры: Вы не получите scancodes, Вы получите ASCII (или UTF-8, скорее всего). Таким образом, Escape десятичный 27, не 1 (как на исходной клавиатуре IBM PC).
Альтернативное предложение, которое требует доступа суперпользователя: читайте на устройствах события, откройте правильное и считайте структуры события Linux из него. Этот метод возвращает необработанные события нажатия/выпуска и ключ (они - внутренние коды клавиши ядра, тем не менее, не аппаратные средства scancodes). Выезд /usr/include/linux/input.h
для специфических особенностей. Нахождение права eventX
устройство для открытия в 256 байтах кода является другим вопросом в целом, конечно.
Необходимо установить tty на режим без предварительной обработки, видеть man stty
.
termios
манипуляции. – Alexios 24.01.2012, 04:53