Обработчики событий? - PullRequest
       2

Обработчики событий?

0 голосов
/ 15 сентября 2018

Я использую данный код для обработки щелчков мыши. Однако это не работает. Я прошел через input.h, чтобы понять это, но не смог. Байт равен 1, когда он достигает условия if, но мой код все еще не позволяет выполнению войти внутрь, если условие. Что это здесь делается неправильно:

const char *mfile = "/dev/input/mice";

int main()
{
int fd, bytes;
struct input_event data;

fd = open(mfile, O_RDWR | O_NONBLOCK);
if(fd == -1)
{
    printf("ERROR Opening associated device file: /dev/input/mice \n");
    return -1;
}

while(1)
{ 
    bytes = read(fd, &data, sizeof(struct input_event));

    if(bytes > 0)
    {
     if((data.code == BTN_LEFT) && (data.value == 0))
                printf("Left pressed. \n");                    
         else if((data.code == BTN_RIGHT) && (data.value == 0))
        printf("Right presseed. \n");
    }   
}
close(fd);
return 0; 
}

1 Ответ

0 голосов
/ 15 сентября 2018

Вам придется подождать, пока read не прочитает введенный размер структуры input_event, прежде чем обрабатывать данные в нем.

Но текущий код только проверяет, были ли прочитаны какие-либо байты.Эту проверку следует изменить, чтобы проверить, равно ли число прочитанных байтов структуре input_event.

См. Документацию read :.

Возвращаемое значение.

В случае успеха возвращается число прочитанных байтов (ноль указывает на конец файла), и позиция файла увеличивается на это число. Не является ошибкой, если это число меньше числа запрошенных байтов;это может произойти, например, потому что на самом деле сейчас доступно меньше байтов (возможно, потому что мы были близки к концу файла, или потому, что мы читаем из канала или из терминала), или потому что read () былпрерван сигналом.В случае ошибки возвращается -1 и значение errno устанавливается соответствующим образом.В этом случае не указывается, изменяется ли позиция файла (если есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...