On Wed, Mar 30, 2011 at 9:20 PM, Peter Hutterer
<[email protected]> wrote:
> On Wed, Mar 30, 2011 at 01:54:47PM -0700, Jason Gerecke wrote:
>> Adding to the only-kinda-hackish use of XGetDeviceButtonMapping,
>> in get_map, this total hackjob of a patch "fixes" the problem with
>> us having no way of knowing the driver's defaults for wheels and
>> strips.
>>
>> Thankfully, the defaults aren't changing anytime soon so its
>> not likely to break. Additionally, once the raw button path is
>> removed from the driver, the entire 'get_map' function can go
>> the way of the dodo.
>
> This seems to solve the wrong problem. How about we decide that xsetwacom
> controls the physical buttons on the device? That way, anyone wanting to
> configure logical mapping can use the X tools and xsetwacom is
> driver-specific and stays (documented so!) driver-specific. which of course
> also means we need to check that the Button xorg.conf option does the right
> thing.
>
That would make a number of things easier, but also comes with its own
drawbacks. I think we should probably figure out where hassle,
correctness, and compatibility collide first.
>> ---
>> tools/xsetwacom.c | 36 ++++++++++++++++++++++++------------
>> 1 files changed, 24 insertions(+), 12 deletions(-)
>>
>> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
>> index 38002cb..1c0f43f 100644
>> --- a/tools/xsetwacom.c
>> +++ b/tools/xsetwacom.c
>> @@ -1884,22 +1884,34 @@ static void get_map(Display *dpy, XDevice *dev,
>> param_t *param, int argc, char**
>> else if (get_button(dpy, dev, param, offset))
>> return;
>> else
>> - {
>> - int nmap = 256;
>> - unsigned char map[nmap];
>> + { /* FIXME: Ugly hack because there's no way to get default buttons */
>> + if (strcmp(param->prop_name, WACOM_PROP_BUTTON_ACTIONS) == 0)
>> + {
>> + int nmap = 256;
>> + unsigned char map[nmap];
>>
>> - nmap = XGetDeviceButtonMapping(dpy, dev, map, nmap);
>> + nmap = XGetDeviceButtonMapping(dpy, dev, map, nmap);
>>
>> - if (offset >= nmap)
>> - {
>> - fprintf(stderr, "Button number does not exist on
>> device.\n");
>> - return;
>> - }
>> + if (offset >= nmap)
>> + {
>> + fprintf(stderr, "Button number does not exist
>> on device.\n");
>> + return;
>> + }
>>
>> - print_value(param, "%d", map[offset]);
>> + print_value(param, "%d", map[offset]);
>>
>> - XSetDeviceButtonMapping(dpy, dev, map, nmap);
>> - XFlush(dpy);
>> + XSetDeviceButtonMapping(dpy, dev, map, nmap);
>
> I didn't pick this up in 155a4b9 but I don't think the
> XSetDeviceButtonMapping actually does anything here. Not sure why it's
> there, looks like a copy paste error (4d2c3d19dce4).
>
I remember being confused when I saw it, but didn't want to touch it.
I figured it was some arcane intricacy of X.
>
>> + XFlush(dpy);
>> + }
>> + else
>> + {
>> + switch (offset) {
>> + case 0: print_value(param, "4"); break;
>> + case 1: print_value(param, "5"); break;
>> + case 2: print_value(param, "4"); break;
>> + case 3: print_value(param, "5"); break;
>> + }
>> + }
>> }
>> }
>>
>> --
>> 1.7.4.1
>
------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself;
WebMatrix provides all the features you need to develop and
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel