Кнопка мыши SDL не соответствует

У меня возникла любопытная маленькая проблема опроса событий мыши с использованием SDL.

        if(event.type == SDL_MOUSEBUTTONDOWN) {
printf("click %d\n", event.button.button);
}
else if(event.type == SDL_MOUSEMOTION) {
printf("move %d\n", event.button.button);}

Если я нажимаю и удерживаю правую кнопку мыши во время перемещения мыши, я получаю:

click 3 // = SDL_BUTTON_RIGHT
move 4  // != SDL_BUTTON_RIGHT !
move 4
...

то есть SDL_MOUSEBUTTONDOWN устанавливает кнопку button.The на 3 для правой кнопки мыши, в то время как SDL_MOUSEMOTION устанавливает ее на 4.

Кто-нибудь знает, почему это может происходить?

1

Решение

Вы должны использовать event.motion за SDL_MOUSEMOTIONне event.button, Более того, event.motion.state битовая маска, вы должны запросить его с event.motion.state & SDL_BUTTON(3),

1

Другие решения

event.button.button используется для события click, а не для движения. Я не понимаю назначение этого кода?

0

По вопросам рекламы [email protected]