[RFC DRAFT] graphics tablet protocol extension

Bill Spitzak spitzak at gmail.com
Sat Sep 21 10:09:25 PDT 2013

On 09/20/2013 03:35 AM, Peter Hutterer wrote:

> * focus handling for the stylus is easy. focus handling for the buttons on
>    the pad isn't. they could technically be focused elsewhere, like a
>    keyboard focus. some buttons are definitely stylus based (BTN_STYLUS,
>    BTN_STYLUS2, etc.) so should go where the stylus is. Should look at what
>    Win/OSX do here.

I tried both Windows 7 and OS/X with a Wacom Intuos3 6x8.

The buttons act precisely like whatever they are emulating. They can be 
set to be a set of modifier keys, or a single mouse button click, or a 
sequence of keystrokes with modifiers, and the result is exactly as 
though I quickly hit the same things on the main keyboard and mouse.

If a button sends keystrokes then they go to the application with the 
keyboard focus even if the mouse is pointing somewhere else.

If they send a shift modifier then they cause keys typed on the keyboard 
to be uppercase.

Setting them to clicks causes the clicks to go to the application under 
the mouse cursor, activating those applications. This is more apparent 
under Windows where the first click in an un-activated app is still 
handled, on OS/X it just activates it and throws away the click (I 
believe Cocoa apps can see this click, but all ignore it to match OS/X 
UI guidelines).

On Windows, by using Alt+Tab, I was able to make a button type into two 
different applications!

Note that both platforms had a method to make all the button assignments 
depend on the current application.

There are also two vertical strips (just really small pads) next to the 
buttons. They may be limited to detecting the vertical position of the 
pen, but I would not be suprised if they are in fact more of the main 
tablet area and can pick up pressure and tilt and some horizontal 
positions. These could also be programmed to send keystrokes and they 
acted like the buttons.

Now for my opinion:

This seems to be an implementation detail and I think it is ok if the 
effect of buttons goes only to the app with the pointer focus.

The default setups make the buttons act like all the different modifiers 
so you can do shift+click on the pad. On OS/X one of the buttons is set 
so when held down it causes the pen to send x/y mouse scrolling events. 
The small vertical strips are set in both cases to "smart scroll" which 
it is unclear what it does, and imho setting them to the scroll wheel 
works better ("smart scroll" may be an attempt to work around Window's 
very broken policy of sending the scroll wheel to the keyboard focus). I 
think this covers what is needed for "tablet unaware" applications. I 
suspect that the modifiers only have to work at the moment a click is 
sent from the pen, though working the way Windows and OS/X does might be 
the easiest implementation but users are not relying on it.

The reason for the keystrokes is obviously to trigger shortcuts in the 
application the pen is being used on, such as to switch tools in 
Photoshop. I suspect it would be ok if they went to the client with 
pointer focus (it could ignore them if it does not have keyboard focus 
if that helps). They can also be unique buttons, it would be much better 
if the client provided the api to change what the buttons do.

More information about the wayland-devel mailing list