Mercurial > sdl-ios-xcode
diff src/video/qnxgf/SDL_gf_input.h @ 3109:7b3a09fb9c8b
Support for HID devices (mice and keyboards only for now) has been added
author | Mike Gorchak <lestat@i.com.ua> |
---|---|
date | Tue, 28 Apr 2009 04:33:30 +0000 |
parents | |
children | 7f684f249ec9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/video/qnxgf/SDL_gf_input.h Tue Apr 28 04:33:30 2009 +0000 @@ -0,0 +1,165 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2009 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org + + QNX Graphics Framework SDL driver + Copyright (C) 2009 Mike Gorchak + (mike@malva.ua, lestat@i.com.ua) +*/ + +#ifndef __SDL_GF_INPUT_H__ +#define __SDL_GF_INPUT_H__ + +#include "SDL_config.h" +#include "SDL_video.h" +#include "../SDL_sysvideo.h" + +#include <errno.h> + +#include <gf/gf.h> + +#include <sys/hiddi.h> +#include <sys/hidut.h> + +#include "SDL_qnxgf.h" + +typedef struct SDL_MouseData +{ + SDL_DisplayData* didata; +} SDL_MouseData; + +int32_t gf_addinputdevices(_THIS); +int32_t gf_delinputdevices(_THIS); + +#define SDL_GF_MOUSE_COLOR_BLACK 0xFF000000 +#define SDL_GF_MOUSE_COLOR_WHITE 0xFFFFFFFF +#define SDL_GF_MOUSE_COLOR_TRANS 0x00000000 + +/*****************************************************************************/ +/* This is HIDDI closed interface declarations */ +/*****************************************************************************/ +#define HID_TYPE_MAIN 0x0 +#define HID_TYPE_GLOBAL 0x1 +#define HID_TYPE_LOCAL 0x2 +#define HID_TYPE_RESERVED 0x3 + +#define HID_GLOBAL_USAGE_PAGE 0x0 +#define HID_LOCAL_USAGE 0x0 + +typedef struct _hid_byte +{ + uint8_t HIDB_Length; + uint8_t HIDB_Type; + uint8_t HIDB_Tag; + uint8_t reserved[1]; +} hid_byte_t; + +typedef struct _hidd_global_item +{ + uint16_t usage_page; + uint16_t logical_min; + uint16_t logical_max; + uint16_t physical_min; + uint16_t physical_max; + uint16_t unit_expo; + uint16_t unit; + uint16_t report_size; + uint16_t report_id; + uint16_t report_count; +} hidd_global_item_t; + +typedef struct _hidd_local_item +{ + uint16_t type; + uint8_t reserved[2]; + uint32_t value; + struct _hidd_local_item* next_local; + struct _hidd_local_item* alt_local; +} hidd_local_item_t; + +typedef struct _hidd_local_table +{ + hidd_local_item_t* usage_info; + hidd_local_item_t* designator_info; + hidd_local_item_t* string_info; + uint8_t delimiter; + uint8_t reserved[3]; +} hidd_local_table_t; + +typedef struct _hidd_field +{ + struct hidd_report_instance* report; + struct hidd_collection* collection; + uint16_t report_offset; + uint16_t flags; + hidd_global_item_t gitem; + hidd_local_table_t* ltable; + struct _hidd_field* next_field; + void* user; +} hidd_field_t; + +typedef struct hidd_report_instance +{ + uint8_t report_id; + uint8_t reserved[1]; + uint16_t report_type; + hidd_field_t* field; + uint16_t num_field; + uint16_t byte_len; + uint16_t bit_len; + uint8_t reserved2[2]; + struct hidd_collection* collection; + struct hidd_report_instance* next_col_report; + struct hidd_report_instance* next_report; +} hidd_report_instance_t; + +typedef struct hidd_report +{ + TAILQ_ENTRY(hidd_report) link; + hidd_report_instance_t* rinst; + hidd_device_instance_t* dev_inst; + uint32_t flags; + struct hidd_connection* connection; + void* user; +} hidd_report_t; + +typedef struct hidview_device +{ + struct hidd_report_instance* instance; + struct hidd_report* report; +} hidview_device_t; + +/*****************************************************************************/ +/* Closed HIDDI interface declarations end */ +/*****************************************************************************/ + +/* Maximum devices and subdevices amount per host */ +#define SDL_HIDDI_MAX_DEVICES 64 + +/* Detected device/subdevice type for SDL */ +#define SDL_GF_HIDDI_NONE 0x00000000 +#define SDL_GF_HIDDI_MOUSE 0x00000001 +#define SDL_GF_HIDDI_KEYBOARD 0x00000002 +#define SDL_GF_HIDDI_JOYSTICK 0x00000003 + +extern void hiddi_enable_mouse(); +extern void hiddi_disable_mouse(); + +#endif /* __SDL_GF_INPUT_H__ */