Ищу способы получения клавиш, движений от клавиатуры, мыши (клавиатура, мышь)

Модератор: Модераторы разделов

Аватара пользователя
greatpower
Сообщения: 15
ОС: slackware

Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение greatpower »

Пишу программу для консоли.

Делаю программу с удобным интерфейсом. :laugh:

Стандартные доступ терминальных кодов не подходит, т.к. с ним не возможны все сочетания клавиш, некоторые клавиши вообще недоступны.

Ищу разные способы получения нажатия всех клавиш, сочетаний клавиш, движений мыши,
нажатий кнопок мыши, колеса мыши.

Пока что нашёл такие способы.

Клавиатура :


  • Коды терминала (обычный режим) - Отсутствут полный доступ к всем сочетаниям клавиш и некоторым отдельным клавишам.
  • RAW режим - Хороший способ. Дает доступ ко всем клавишам, их нажатиям и отжатиям.
    Но опасен, т. к. получается эксклюзивный доступ и нужно позаботится о возвращении нормального режима клавиатуры. Например создав спец-сервис который будет "если че" при зависании, вылете основной программы возвращать нормальный режим клавиатуры.
  • Скан коды - это как-бы не нужный режим, т. к. уже есть RAW режим.
  • Библиотеки SLANG, NCURSES - предоставляют режимы кодов терминала.
  • /dev/input/ - это крутой способ.
    Дает доступ ко всем клавишам, их нажатиям и отжатиям.
    Интересен тем что не блокирует клавиатуру !
    Из /dev/input/ могут читать множество программ одновременно.
    Им пользуется например X Window System.
    Но по дефолту дается доступ только для root. Придется перенастроить права доступа к файлу, дать доступ на чтение для юзера.



Мышь :

  • gpm - нельзя получить события о прокрутки колесика мыши.
  • /dev/input/ - Дает данные о колесе мыши.
    Но по дефолту дается доступ только для root. Придется перенастроить права доступа к файлу, дать доступ на чтение для юзера.


Решил что буду использовать по дефолту /dev/input/, а для работы в особых случаях (удаленный доступ) режим терминальных кодов.

Каким ещё способом можно получить нажатия клавиш, мыши, движения мыши, колеса мыши, если такие существуют ?

Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение deadhead »

gtkfb?
[x] close
Спасибо сказали:
Аватара пользователя
greatpower
Сообщения: 15
ОС: slackware

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение greatpower »

deadhead писал(а):
17.03.2010 14:35
gtkfb?


Интересно :rolleyes:

Оказывается множество иксовых виджетов могут работать в framebuffer (без X Window):



И DirectFB позволяет работать с клавиатурой, мышью
Спасибо сказали:
Ramol
Сообщения: 44
ОС: Debian

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение Ramol »

Ну я не уверен но можеш глянуть ncurses Ой уже згадали про ncurses :blush:
Спасибо сказали:
Аватара пользователя
greatpower
Сообщения: 15
ОС: slackware

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение greatpower »

Ramol писал(а):
17.03.2010 16:09
Ну я не уверен но можеш глянуть ncurses


знаю о нем, уже указал в первом посте ;)
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение deadhead »

[x] close
Спасибо сказали:
Аватара пользователя
greatpower
Сообщения: 15
ОС: slackware

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение greatpower »

deadhead писал(а):
17.03.2010 16:27
SDL?


учту
Спасибо сказали:
Аватара пользователя
VoidExp
Сообщения: 208
Статус: Lead guitar adept
ОС: Ubuntu

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение VoidExp »

Keylogger-newbie detected :P
Спасибо сказали:
javasc
Сообщения: 52

Re: Ищу способы получения клавиш, движений от клавиатуры, мыши

Сообщение javasc »

Часть кода "работа с x-сервером, с opengl".
#include <X11/keysym.h>
...........................
if (XLookupKeysym(&event.xkey,0) == XK_F1)
{
........
}
нажатие клавишы F1.
p.s: код не полный, это лишь то куда нужно искать.
"Корпорация интеллекта"
Спасибо сказали: