On Tue, Oct 04, 2011 at 06:00:28PM -0700, Jason Gerecke wrote: > I'm working on adding support for the recently-announced Cintiq 24HD. > It's pretty straightforward, but there are two interesting bits that > I'd like some guidance on. > > Firstly, the 24HD has three "hardware control buttons" along the top > edge which are physically implemented as a touch strip. While it could > in theory be used *as* a touch strip, the fact that it is one is > completely non-obvious. The manual refers to them as buttons, they > have painted-on icons like buttons, and each are in a fingertip-sized > indentation like a button (I only found out it was a touchstrip by > watching evdev). Leaving them as a touch strip isn't likely to cause > problems, but I feel there is also merit to the concept of translating > them into buttons. Thoughts? Opinions?
meh. if they're buttons in the manual, they look like buttons and are designed to be buttons, let's just export them as buttons. > Secondly, the 24HD adds a second touchring to the mix, which means > trying to figure out the best way to get its data out of the kernel > and X driver: > > For the kernel driver, there are a few different axes we could put the > data into. There are benefits and drawbacks to each, and input on the > balance each option achieves would be appreciated. > > * ABS_WHEEL: Using this axis means the second ring will work with > current X11 drivers. However, since both rings are stored in the same > axis, it will be impossible to seperate out the data at a later time. > Additionally, simultaneous use of the two rings may have unexpected > effects as the axis value jumps around. > > * ABS_Z: Using this axis means the second ring will work with current > X11 drivers (ds->abswheel stores ABZ_Z and ABS_WHEEL alike). New > drivers could add a new field to the devicestate to keep the two rings > seperate, allowing independent use. However, since ABS_Z is *already* > being used to store stylus barrel rotation, clients other than our own > X11 driver may break in unexpected ways when the second ring is used. > > * ABS_RZ: Using this axis will cause the second ring to not work at > all in current X11 drivers (ds->rotation, where ABS_RZ is stored, is > ignored for the pad device). Additionally, since ABS_RZ is already in > use for 4D mouse rotation, clients other than our own X11 driver may > break in unexpected ways when the second ring is used. That said, if > possible breakage for this one axis on this one tool is acceptable, it > may be a more logical solution. ABS_RX and ABS_RY already contain > touch strip data, and 4D mouse rotation arguably belongs in ABS_Z > anyway (it has both the same semantics and possible range of values). > > * ABS_RUDDER: Using this (or another similar) axis will cause the > second ring to not work at all in current X11 drivers. However, since > this axis is not currently emitted by our kernel driver, the chance of > breaking clients other than our own driver is minimal. Additionally, > by having the ring on an axis to itself it is possible to advertise > the correct range of values to clients (which would also be the case > if 4D mouse rotation is moved off the ABS_RZ axis). This may not be > that important though -- ABS_WHEEL already violates this by sharing > the left touch ring (range 0..71) and airbrush fingerwheel (range > 0..1023). add ABS_WHEEL2 to the kernel. for better or worse, input events in the kernel all have a semantic meaning. trying to hack around that just causes pain. Remember that the kernel is supposed to be a device abstraction layer so that whatever comes out of it is reasonably generic. it's not just an API conversion so that you need wacom-specific tools on both sides. > For the X driver, we run into a backwards-compatibility problem > (...unless we go the lame route with ABS_WHEEL). While XI2 provides up > to 36 valuators, I believe there was a limit of 6 valuators at some > point in the past. With the pad device having 3 axes reserved for > X/Y/P, and 2 axes reserved for touch strips, there's just not enough > room for both touch rings. We can break apps that were written with > the 6 valuator limit in mind or break apps that assume the first 5 > axes are X/Y/P/TSl/TSr. I'm not sure what kind of fall-out to expect > from either option, so any insight would be appreciated :) sooner or later we will have to break those apps. I think Alexia may have more comments here, the last one I found was "GTK event handling code that feeds gimp has fixed struct of 6 axis. Stuffing an extra axis would kill the tool for all past versions of GIMP and anything thats relased months to a year in the future, because GTK wont catch up and then a lot of code in gimp that deals with coord structs would need to change too. Its a crap-ton of code and even I dont know where changing the coords structs can lead." Cheers, Peter ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel