[chuck-users] spacenavigator

Hans Aberg haberg at math.su.se
Sun May 24 09:56:50 EDT 2009


On 24 May 2009, at 14:50, dan trueman wrote:

>> One would want a way to list all available devices, and make a pick  
>> from them. (Like 'chuck --probe' but for HIDs and within the  
>> program.)

> yes, this would be super useful...

I think this is essentially what the program I mentioned in the other  
post does. Below is a sample printout, for a Logitech Extreme 3D,  
which has 12 buttons, x-, y- and z-axis, slider, and hatswitch. As you  
can see, it writes out a lot information about the product and all its  
controller elements.

   Hans


----
--- Device 0 ---
IO Registry Path: [ IOService:/MacRISC2PE/pci at f2000000/AppleMacRiscPCI/ 
usb at 18/AppleUSBOHCI/Logitech Extreme 3D at 18100000/IOUSBInterface at 0/ 
IOUSBHIDDriver ]
- Device Properties -

Transport = USB
VendorID = 0x46d (1133)
ProductID = 0xc215 (49685)
VersionNumber = 0x204 (516)
Manufacturer = Logitech
Product = Logitech Extreme 3D
LocationID = 0x18100000 (403701760)
PrimaryUsage = 0x4 (4)
PrimaryUsagePage = 0x1 (1)- Device Element Properties -

Elements =
    [0]
       ElementCookie = 0x1 (1)
       Collection Type (513),
       CollectionType = 0x1 (1)
       Usage: Generic Desktop (0x1), Joystick (0x4)
       Elements =
          [0]
             ElementCookie = 0x2 (2)
             Collection Type (513),
             CollectionType = 0x2 (2)
             Usage: Generic Desktop (0x1), X-Axis (0x30)
             Elements =
                [0]
                   ElementCookie = 0x4 (4)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #1 (0x1)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [1]
                   ElementCookie = 0x5 (5)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #2 (0x2)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [2]
                   ElementCookie = 0x6 (6)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #3 (0x3)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [3]
                   ElementCookie = 0x7 (7)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #4 (0x4)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [4]
                   ElementCookie = 0x8 (8)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #5 (0x5)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [5]
                   ElementCookie = 0x9 (9)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #6 (0x6)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [6]
                   ElementCookie = 0xa (10)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #7 (0x7)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [7]
                   ElementCookie = 0xb (11)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #8 (0x8)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [8]
                   ElementCookie = 0xc (12)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #9 (0x9)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [9]
                   ElementCookie = 0xd (13)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #10 (0xa)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [10]
                   ElementCookie = 0xe (14)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #11 (0xb)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [11]
                   ElementCookie = 0xf (15)
                   Button Input Type (2),
                   Usage: Button Page (0x9), Button #12 (0xc)
                   Min = 0x0 (0)
                   Max = 0x1 (1)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x1 (1)
                   Size = 0x1 (1)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [12]
                   ElementCookie = 0x10 (16)
                   Miscellaneous Input Type (1),
                   Usage: Generic Desktop (0x1), X-Axis (0x30)
                   Min = 0x0 (0)
                   Max = 0x3ff (1023)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x3ff (1023)
                   Size = 0xa (10)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [13]
                   ElementCookie = 0x11 (17)
                   Miscellaneous Input Type (1),
                   Usage: Generic Desktop (0x1), Y-Axis (0x31)
                   Min = 0x0 (0)
                   Max = 0x3ff (1023)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x3ff (1023)
                   Size = 0xa (10)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [14]
                   ElementCookie = 0x12 (18)
                   Miscellaneous Input Type (1),
                   Usage: Generic Desktop (0x1), Hatswitch (0x39)
                   Min = 0x0 (0)
                   Max = 0x7 (7)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0x13b (315)
                   Size = 0x4 (4)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = true
                   Unit = 0x14 (20)
                   UnitExponent = 0x0 (0)
                [15]
                   ElementCookie = 0x13 (19)
                   Miscellaneous Input Type (1),
                   Usage: Generic Desktop (0x1), Z-Rotation (0x35)
                   Min = 0x0 (0)
                   Max = 0xff (255)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0xff (255)
                   Size = 0x8 (8)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
                [16]
                   ElementCookie = 0x14 (20)
                   Miscellaneous Input Type (1),
                   Usage: Generic Desktop (0x1), Slider (0x36)
                   Min = 0x0 (0)
                   Max = 0xff (255)
                   ScaledMin = 0x0 (0)
                   ScaledMax = 0xff (255)
                   Size = 0x8 (8)
                   IsRelative = false
                   IsWrapping = false
                   IsNonLinear = false
                   HasPreferredState = true
                   HasNullState = false
                   Unit = 0x0 (0)
                   UnitExponent = 0x0 (0)
   ...
----



More information about the chuck-users mailing list