Index: client.c =================================================================== RCS file: /cvsroot/bluez/gnome/common/client.c,v retrieving revision 1.41 diff -u -p -u -p -r1.41 client.c --- client.c 11 Feb 2008 22:23:36 -0000 1.41 +++ client.c 5 Mar 2008 23:41:16 -0000 @@ -137,6 +137,10 @@ const gchar *bluetooth_type_to_string(gu return N_("Camera"); case BLUETOOTH_TYPE_PRINTER: return N_("Printer"); + case BLUETOOTH_TYPE_JOYPAD: + return N_("Joypad"); + case BLUETOOTH_TYPE_TABLET: + return N_("Tablet"); default: return N_("Unknown"); } @@ -163,15 +167,28 @@ static guint class_to_type(guint32 class case 0x04: switch ((class & 0xfc) >> 2) { case 0x01: + case 0x02: return BLUETOOTH_TYPE_HEADSET; } break; case 0x05: switch ((class & 0xc0) >> 6) { + case 0x00: + switch ((class & 0x1e) >> 2) { + case 0x01: + case 0x02: + return BLUETOOTH_TYPE_JOYPAD; + } + break; case 0x01: return BLUETOOTH_TYPE_KEYBOARD; case 0x02: - return BLUETOOTH_TYPE_MOUSE; + switch ((class & 0x1e) >> 2) { + case 0x05: + return BLUETOOTH_TYPE_TABLET; + default: + return BLUETOOTH_TYPE_MOUSE; + } } break; case 0x06: Index: client.h =================================================================== RCS file: /cvsroot/bluez/gnome/common/client.h,v retrieving revision 1.23 diff -u -p -u -p -r1.23 client.h --- client.h 11 Feb 2008 22:23:36 -0000 1.23 +++ client.h 5 Mar 2008 23:41:16 -0000 @@ -86,10 +86,12 @@ enum { BLUETOOTH_TYPE_KEYBOARD = 1 << 6, BLUETOOTH_TYPE_MOUSE = 1 << 7, BLUETOOTH_TYPE_CAMERA = 1 << 8, - BLUETOOTH_TYPE_PRINTER = 1 << 9 + BLUETOOTH_TYPE_PRINTER = 1 << 9, + BLUETOOTH_TYPE_JOYPAD = 1 << 10, + BLUETOOTH_TYPE_TABLET = 1 << 11, }; -#define BLUETOOTH_TYPE_NUM_TYPES 10 +#define BLUETOOTH_TYPE_NUM_TYPES 12 #define BLUETOOTH_TYPE_INPUT (BLUETOOTH_TYPE_KEYBOARD | BLUETOOTH_TYPE_MOUSE) const gchar *bluetooth_type_to_string(guint type);