Patch by idefix: Add support for five different Bamboo devices. Closes #6108.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38615 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -223,6 +223,21 @@ TabletDevice::DetectDevice(const DeviceReader* reader)
|
|||||||
case 0xB2:
|
case 0xB2:
|
||||||
SetDevice(60960.0, 45720.0, DEVICE_INTUOS3);
|
SetDevice(60960.0, 45720.0, DEVICE_INTUOS3);
|
||||||
break;
|
break;
|
||||||
|
case 0xD0: // Wacom Bamboo 2FG (from Linux Wacom Project)
|
||||||
|
SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
|
||||||
|
break;
|
||||||
|
case 0xD1: // Wacom BambooFun 2FG 4x5 (from Linux Wacom Project)
|
||||||
|
SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
|
||||||
|
break;
|
||||||
|
case 0xD2: // Wacom Bamboo Craft (from Linux Wacom Project)
|
||||||
|
SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
|
||||||
|
break;
|
||||||
|
case 0xD3: // Wacom BambooFun 2FG 6x8 (from Linux Wacom Project)
|
||||||
|
SetDevice(21648.0, 13530.0, DEVICE_BAMBOO_PT);
|
||||||
|
break;
|
||||||
|
case 0xD4: // Wacom Bamboo 4x5 (from Linux Wacom Project)
|
||||||
|
SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
status = B_BAD_VALUE;
|
status = B_BAD_VALUE;
|
||||||
break;
|
break;
|
||||||
@@ -243,8 +258,8 @@ TabletDevice::SetDevice(float maxX, float maxY, uint32 mode)
|
|||||||
|
|
||||||
// ReadData
|
// ReadData
|
||||||
void
|
void
|
||||||
TabletDevice::ReadData(const uchar* data, bool& hasContact, uint32& mode,
|
TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
|
||||||
uint32& buttons, float& x, float& y, float& pressure,
|
uint32& mode, uint32& buttons, float& x, float& y, float& pressure,
|
||||||
int32& clicks, int32& eraser, float& wheelX, float& wheelY,
|
int32& clicks, int32& eraser, float& wheelX, float& wheelY,
|
||||||
float& tiltX, float& tiltY) const
|
float& tiltX, float& tiltY) const
|
||||||
{
|
{
|
||||||
@@ -302,6 +317,25 @@ TabletDevice::ReadData(const uchar* data, bool& hasContact, uint32& mode,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case DEVICE_BAMBOO_PT:
|
||||||
|
{
|
||||||
|
if (dataBytes < 20) { // ignore touch-packets
|
||||||
|
xPos = data[3] << 8 | data[2];
|
||||||
|
yPos = data[5] << 8 | data[4];
|
||||||
|
|
||||||
|
hasContact = (data[1] & 0x10) && (data[1] & 0x20);
|
||||||
|
|
||||||
|
uint16 pressureData = data[7] << 8 | data[6];
|
||||||
|
pressure = (float)pressureData / 1023.0;
|
||||||
|
eraser = (data[1] & 0x08);
|
||||||
|
|
||||||
|
firstButton = (data[1] & 0x01);
|
||||||
|
secondButton = (data[1] & 0x02);
|
||||||
|
thirdButton = (data[1] & 0x04);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
case DEVICE_INTUOS:
|
case DEVICE_INTUOS:
|
||||||
case DEVICE_INTUOS3:
|
case DEVICE_INTUOS3:
|
||||||
case DEVICE_CINTIQ:
|
case DEVICE_CINTIQ:
|
||||||
@@ -598,7 +632,7 @@ TabletDevice::poll_usb_device(void* arg)
|
|||||||
float tiltX = 0.0;
|
float tiltX = 0.0;
|
||||||
float tiltY = 0.0;
|
float tiltY = 0.0;
|
||||||
// let the device extract all information from the data
|
// let the device extract all information from the data
|
||||||
tabletDevice->ReadData(data, hasContact, mode, buttons,
|
tabletDevice->ReadData(data, dataBytes, hasContact, mode, buttons,
|
||||||
x, y, pressure, clicks, eraser,
|
x, y, pressure, clicks, eraser,
|
||||||
wheelX, wheelY, tiltX, tiltY);
|
wheelX, wheelY, tiltX, tiltY);
|
||||||
if (hasContact) {
|
if (hasContact) {
|
||||||
@@ -766,6 +800,23 @@ TabletDevice::_GetName(uint16 productID, const char** name) const
|
|||||||
case 0xB2:
|
case 0xB2:
|
||||||
*name = "Wacom Intuos3 9x12 USB";
|
*name = "Wacom Intuos3 9x12 USB";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0xD0:
|
||||||
|
*name = "Wacom Bamboo 2FG USB";
|
||||||
|
break;
|
||||||
|
case 0xD1:
|
||||||
|
*name = "Wacom BambooFun 2FG 4x5\" USB";
|
||||||
|
break;
|
||||||
|
case 0xD2:
|
||||||
|
*name = "Wacom Bamboo Craft USB";
|
||||||
|
break;
|
||||||
|
case 0xD3:
|
||||||
|
*name = "Wacom BambooFun 2FG 6x8\" USB";
|
||||||
|
break;
|
||||||
|
case 0xD4:
|
||||||
|
*name = "Wacom Bamboo 4x5\" USB";
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*name = "<unkown wacom tablet>";
|
*name = "<unkown wacom tablet>";
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class TabletDevice : public PointingDevice {
|
|||||||
uint32 mode = DEVICE_INTUOS);
|
uint32 mode = DEVICE_INTUOS);
|
||||||
|
|
||||||
void ReadData(const uchar* data,
|
void ReadData(const uchar* data,
|
||||||
|
int dataBytes,
|
||||||
bool& hasContact,
|
bool& hasContact,
|
||||||
uint32& mode,
|
uint32& mode,
|
||||||
uint32& buttons,
|
uint32& buttons,
|
||||||
@@ -76,6 +77,7 @@ class TabletDevice : public PointingDevice {
|
|||||||
DEVICE_PENSTATION,
|
DEVICE_PENSTATION,
|
||||||
DEVICE_CINTIQ,
|
DEVICE_CINTIQ,
|
||||||
DEVICE_BAMBOO,
|
DEVICE_BAMBOO,
|
||||||
|
DEVICE_BAMBOO_PT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|||||||
Reference in New Issue
Block a user