Возможный дубликат:
Доступ к нажатий клавиш в C
Мониторинг клавиш клавиатуры в Ubuntu
Я хочу обнаруживать и отмечать время каждого события нажатия клавиш и нажатия клавиш в программе (да, я имею в виду KeyDown а также KeyUp не только нажатие клавиш), а также то, что клавиша была нажата. Я мог бы сделать это, используя APi, такой как GTK, но я хочу получить как можно более простой и низкий уровень, чтобы избежать накладных расходов библиотек, влияющих на время, а также писать меньше кода.
Я уже некоторое время гуглю это и нашел кучу материала о том, как это сделать в Windows, что мне не помогает, так как я использую систему Linux, и как обнаружить нажатие клавиш в Linux, но не keyup keydown.
Может кто-нибудь сказать мне, что системный вызов, библиотека и т. Д. Мне нужно было бы использовать для захвата событий keydown и keyup в системе Linux с программой командной строки на C ++? И если у вас есть ссылка на учебник или пример кода, это будет очень ценно.
Вы могли бы прочитать необработанное устройство, я не пробовал это, но этот блог выглядит многообещающе: http://www.thelinuxdaily.com/2010/05/grab-raw-keyboard-input-from-event-device-node-devinputevent/
так что по сути вы читаете напрямую из / dev / input / *
Вы можете проверить это работает, запустив sudo cat /dev/input/eventX
где X — одно из устройств событий, перечисленных в этом каталоге (одно из них будет вашей клавиатурой. Я уверен, что есть хороший способ найти какое из них программно, но вы можете быстро узнать это, посмотрев в / dev / input / by-id / или просто чтение из одной из этих символических ссылок напрямую.)
ПРИМЕЧАНИЕ: это даст вам ввод с клавиатуры все время, не только когда ваше окно находится в фокусе … (ваша программа даже не должна быть запущена в xterm, или даже в pty).
Реально, вы не сможете сделать это без библиотеки. Если вы хотите что-то, что имеет очень мало накладных расходов, я бы предложил Ncurses. Если вам абсолютно необходимо сделать это без библиотеки, посмотрите, как ncurses реализует это. Это будет, конечно, очень сложно.
Я хотел бы взглянуть на библиотеку OIS (Object Oriented Input System). Он довольно прост в использовании, имеет хороший внешний вид и кроссплатформенность. Для учебника и некоторого кода взгляните на http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Using+OIS.