view test/testmmousetablet.c @ 2842:97ba0be8b565

Date: Sat, 06 Dec 2008 15:27:00 +0100 From: Couriersud Subject: SDL: Relative mouse movements The patch below will reenable processing of relative mouse movements. The DirectFB drivers generates those in "grabbed" mode. These ensure, that even in fullscreen mode relative movements are reported. SDLMAME depends on this for games with trackballs. Looking at the code I ask myself whether relative movements should be handled in the drivers (x11, directfb). Both x11 and directfb are able to report relative movements. This would leave it to the driver to use the most appropriate method for relative movements when at the border of a fullscreen window or being "grabbed".
author Sam Lantinga <slouken@libsdl.org>
date Sat, 06 Dec 2008 17:50:50 +0000
parents ae653575d4af
children 975fd903466b
line wrap: on
line source

#include <stdio.h>
#include "SDL.h"

SDL_Surface *screen;
int quit = 0;

int
main()
{
    SDL_Event event;
    int mice;
    int i;
    printf("Initing...\n");
    if (SDL_Init(0) != 0) {
        return 1;
    }
    if (SDL_InitSubSystem(SDL_INIT_VIDEO) != 0) {
        return 1;
    } else {
        screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF);
    }
    mice = SDL_GetNumMice();
    printf("%d pointing devices found\n", mice);
    for (i = 0; i < mice; ++i) {
        printf("device index: %d name:%s\n", i, SDL_GetMouseName(i));
    }
    while (quit != 1) {
        if (SDL_PollEvent(&event) == 0) {
        } else {
            switch (event.type) {
            case SDL_MOUSEMOTION:
                printf
                    ("Device id: %d x: %d y: %d relx: %d rely: %d pressure: %d\n \
					pressure_max: %d pressure_min: %d current cursor:%d\n",
                     event.motion.which, event.motion.x, event.motion.y, event.motion.xrel, event.motion.yrel,
                     event.motion.pressure, event.motion.pressure_max, event.motion.pressure_min,
                     event.motion.cursor);
                break;
            case SDL_PROXIMITYIN:
                printf("proximity in id: %d x: %d y: %d\n",
                       (int) event.proximity.which, event.proximity.x,
                       event.proximity.y);
                break;
            case SDL_PROXIMITYOUT:
                printf("proximity out id: %d x: %d y: %d\n",
                       (int) event.proximity.which, event.proximity.x,
                       event.proximity.y);
                break;
            case SDL_MOUSEBUTTONDOWN:
                printf("mouse button down id: %d button:%d\n",
                       event.button.which, event.button.button);
                break;
            case SDL_MOUSEBUTTONUP:
                printf("mouse button up id: %d button: %d\n",
                       event.button.which, event.button.button);
                break;
            case SDL_QUIT:
                printf("Quitting\n");
                SDL_QuitSubSystem(SDL_INIT_VIDEO);
                SDL_Quit();
                quit = 1;
                break;
            }
        }
    }
    return 0;
}