173 lines
3.9 KiB
C
173 lines
3.9 KiB
C
/*
|
|
This file is part of g15tools.
|
|
|
|
g15tools is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
g15tools 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with g15lcd; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
(c) 2006 - 2007 The G15tools Project - g15tools.sf.net
|
|
|
|
$Revision: 273 $ - $Date: 2007-11-25 17:14:21 +1030 (Sun, 25 Nov 2007) $ $Author: mlampard $
|
|
*/
|
|
|
|
#ifndef _LIBG15_H_
|
|
#define _LIBG15_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#define G15_LCD 1
|
|
#define G15_KEYS 2
|
|
#define G15_DEVICE_IS_SHARED 4
|
|
|
|
typedef struct libg15_devices_t libg15_devices_t;
|
|
|
|
struct libg15_devices_t {
|
|
const char *name; // name - can be anything, only used for informational purposes
|
|
unsigned int vendorid;
|
|
unsigned int productid;
|
|
unsigned int caps; // capability bitfield - G15_LCD|G15_KEYS;
|
|
};
|
|
|
|
#define DEVICE(name, vendorid, productid, caps) { \
|
|
name, \
|
|
vendorid, \
|
|
productid, \
|
|
caps \
|
|
}
|
|
|
|
/* allow for api changes */
|
|
#define LIBG15_VERSION 1201
|
|
|
|
enum
|
|
{
|
|
G15_LOG_INFO = 1,
|
|
G15_LOG_WARN
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_NO_ERROR = 0,
|
|
G15_ERROR_OPENING_USB_DEVICE,
|
|
G15_ERROR_WRITING_PIXMAP,
|
|
G15_ERROR_TIMEOUT,
|
|
G15_ERROR_READING_USB_DEVICE,
|
|
G15_ERROR_TRY_AGAIN,
|
|
G15_ERROR_WRITING_BUFFER,
|
|
G15_ERROR_UNSUPPORTED
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_LCD_OFFSET = 32,
|
|
G15_LCD_HEIGHT = 43,
|
|
G15_LCD_WIDTH = 160
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_BUFFER_LEN = 0x03e0
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_LED_M1=1<<0,
|
|
G15_LED_M2=1<<1,
|
|
G15_LED_M3=1<<2,
|
|
G15_LED_MR=1<<3
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_CONTRAST_LOW=0,
|
|
G15_CONTRAST_MEDIUM,
|
|
G15_CONTRAST_HIGH
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_BRIGHTNESS_DARK=0,
|
|
G15_BRIGHTNESS_MEDIUM,
|
|
G15_BRIGHTNESS_BRIGHT
|
|
};
|
|
|
|
enum
|
|
{
|
|
G15_KEY_G1 = 1<<0,
|
|
G15_KEY_G2 = 1<<1,
|
|
G15_KEY_G3 = 1<<2,
|
|
G15_KEY_G4 = 1<<3,
|
|
G15_KEY_G5 = 1<<4,
|
|
G15_KEY_G6 = 1<<5,
|
|
G15_KEY_G7 = 1<<6,
|
|
G15_KEY_G8 = 1<<7,
|
|
G15_KEY_G9 = 1<<8,
|
|
G15_KEY_G10 = 1<<9,
|
|
G15_KEY_G11 = 1<<10,
|
|
G15_KEY_G12 = 1<<11,
|
|
G15_KEY_G13 = 1<<12,
|
|
G15_KEY_G14 = 1<<13,
|
|
G15_KEY_G15 = 1<<14,
|
|
G15_KEY_G16 = 1<<15,
|
|
G15_KEY_G17 = 1<<16,
|
|
G15_KEY_G18 = 1<<17,
|
|
|
|
G15_KEY_M1 = 1<<18,
|
|
G15_KEY_M2 = 1<<19,
|
|
G15_KEY_M3 = 1<<20,
|
|
G15_KEY_MR = 1<<21,
|
|
|
|
G15_KEY_L1 = 1<<22,
|
|
G15_KEY_L2 = 1<<23,
|
|
G15_KEY_L3 = 1<<24,
|
|
G15_KEY_L4 = 1<<25,
|
|
G15_KEY_L5 = 1<<26,
|
|
|
|
G15_KEY_LIGHT = 1<<27
|
|
};
|
|
|
|
|
|
/* this one return G15_NO_ERROR on success, something
|
|
* else otherwise (for instance G15_ERROR_OPENING_USB_DEVICE */
|
|
int initLibG15();
|
|
/* re-initialise a previously unplugged keyboard ie ENODEV was returned at some point */
|
|
int re_initLibG15();
|
|
|
|
int exitLibG15();
|
|
/* enable or disable debugging */
|
|
void libg15Debug(int option);
|
|
|
|
int writePixmapToLCD(unsigned char const *data);
|
|
int setLCDContrast(unsigned int level);
|
|
int setLEDs(unsigned int leds);
|
|
int setLCDBrightness(unsigned int level);
|
|
int setKBBrightness(unsigned int level);
|
|
|
|
/* Please be warned
|
|
* the g15 sends two different usb msgs for each key press
|
|
* but only one of these two is used here. Since we do not want to wait
|
|
* longer than timeout we will return on any msg recieved. in the good
|
|
* case you will get G15_NO_ERROR and ORd keys in pressed_keys
|
|
* in the bad case you will get G15_ERROR_TRY_AGAIN -> try again
|
|
*/
|
|
int getPressedKeys(unsigned int *pressed_keys, unsigned int timeout);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|