Ticket #6108: wacom_bamboo2.patch

File wacom_bamboo2.patch, 3.4 KB (added by idefix, 14 years ago)

Add support for the newest Wacom Bamboo devices. Ignores the touch functionality.

  • src/add-ons/input_server/devices/wacom/TabletDevice.h

     
    3131                                    uint32 mode = DEVICE_INTUOS);
    3232
    3333            void                ReadData(const uchar* data,
     34                                    int dataBytes,
    3435                                    bool& hasContact,
    3536                                    uint32& mode,
    3637                                    uint32& buttons,
     
    7677        DEVICE_PENSTATION,
    7778        DEVICE_CINTIQ,
    7879        DEVICE_BAMBOO,
     80        DEVICE_BAMBOO_PT,
    7981    };
    8082
    8183    enum {
  • src/add-ons/input_server/devices/wacom/TabletDevice.cpp

     
    223223        case 0xB2:
    224224            SetDevice(60960.0, 45720.0, DEVICE_INTUOS3);
    225225            break;
     226        case 0xD0:  // Wacom Bamboo 2FG (from Linux Wacom Project)
     227            SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
     228            break;
     229        case 0xD1:  // Wacom BambooFun 2FG 4x5 (from Linux Wacom Project)
     230            SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
     231            break;
     232        case 0xD2:  // Wacom Bamboo Craft (from Linux Wacom Project)
     233            SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
     234            break;
     235        case 0xD3:  // Wacom BambooFun 2FG 6x8 (from Linux Wacom Project)
     236            SetDevice(21648.0, 13530.0, DEVICE_BAMBOO_PT);
     237            break;
     238        case 0xD4:  // Wacom Bamboo 4x5 (from Linux Wacom Project)
     239            SetDevice(14720.0, 9200.0, DEVICE_BAMBOO_PT);
     240            break;
    226241        default:
    227242            status = B_BAD_VALUE;
    228243            break;
     
    243258
    244259// ReadData
    245260void
    246 TabletDevice::ReadData(const uchar* data, bool& hasContact, uint32& mode,
    247     uint32& buttons, float& x, float& y, float& pressure,
     261TabletDevice::ReadData(const uchar* data, int dataBytes, bool& hasContact,
     262    uint32& mode, uint32& buttons, float& x, float& y, float& pressure,
    248263    int32& clicks, int32& eraser, float& wheelX, float& wheelY,
    249264    float& tiltX, float& tiltY) const
    250265{
     
    302317
    303318            break;
    304319        }
     320        case DEVICE_BAMBOO_PT:
     321        {
     322            if (dataBytes < 20) {   // ignore touch-packets
     323                xPos = data[3] << 8 | data[2];
     324                yPos = data[5] << 8 | data[4];
     325   
     326                hasContact = (data[1] & 0x10) && (data[1] & 0x20);     
     327   
     328                uint16 pressureData = data[7] << 8 | data[6];
     329                pressure = (float)pressureData / 1023.0;
     330                eraser = (data[1] & 0x08);
     331   
     332                firstButton = (data[1] & 0x01);
     333                secondButton = (data[1] & 0x02);
     334                thirdButton = (data[1] & 0x04);
     335   
     336                break;
     337            }
     338        }
    305339        case DEVICE_INTUOS:
    306340        case DEVICE_INTUOS3:
    307341        case DEVICE_CINTIQ:
     
    598632            float tiltX = 0.0;
    599633            float tiltY = 0.0;
    600634            // let the device extract all information from the data
    601             tabletDevice->ReadData(data, hasContact, mode, buttons,
     635            tabletDevice->ReadData(data, dataBytes, hasContact, mode, buttons,
    602636                                   x, y, pressure, clicks, eraser,
    603637                                   wheelX, wheelY, tiltX, tiltY);
    604638            if (hasContact) {
     
    766800        case 0xB2:
    767801            *name = "Wacom Intuos3 9x12 USB";
    768802            break;
     803
     804        case 0xD0:
     805            *name = "Wacom Bamboo 2FG USB";
     806            break;
     807        case 0xD1:
     808            *name = "Wacom BambooFun 2FG 4x5\" USB";
     809            break;
     810        case 0xD2:
     811            *name = "Wacom Bamboo Craft USB";
     812            break;
     813        case 0xD3:
     814            *name = "Wacom BambooFun 2FG 6x8\" USB";
     815            break;
     816        case 0xD4:
     817            *name = "Wacom Bamboo 4x5\" USB";
     818            break;
     819
    769820        default:
    770821            *name = "<unkown wacom tablet>";
    771822            break;