2 * Copyright 1996 by Frederic Lepied, France. <Frederic.Lepied@sugix.frmug.org>
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of the authors not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. The authors make no
11 * representations about the suitability of this software for any purpose. It
12 * is provided "as is" without express or implied warranty.
14 * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
28 get_button_map(Display *display,
41 fprintf(stderr, "usage: xinput %s %s\n", name, desc);
45 info = find_device_info(display, argv[0], False);
48 fprintf(stderr, "unable to find device '%s'\n", argv[0]);
52 ip = (XAnyClassPtr) info->inputclassinfo;
55 /* try to find the number of buttons */
56 for(i=0; i<info->num_classes; i++) {
57 if (ip->class == ButtonClass) {
58 nbuttons = ((XButtonInfoPtr)ip)->num_buttons;
61 ip = (XAnyClassPtr) ((char *) ip + ip->length);
64 fprintf(stderr, "device has no buttons\n");
68 device = XOpenDevice(display, info->id);
73 map = (unsigned char *) malloc(sizeof(unsigned char) * nbuttons);
75 XGetDeviceButtonMapping(display, device, map, nbuttons);
77 for(idx=1; idx < nbuttons + 1; idx++) {
78 printf("%d ", map[idx - 1]);
81 XCloseDevice(display, device);
84 fprintf(stderr, "Unable to open device\n");
92 set_button_map(Display *display,
105 fprintf(stderr, "usage: xinput %s %s\n", name, desc);
109 info = find_device_info(display, argv[0], False);
112 fprintf(stderr, "unable to find device '%s'\n", argv[0]);
116 ip = (XAnyClassPtr) info->inputclassinfo;
119 /* try to find the number of buttons */
120 for(i=0; i<info->num_classes; i++) {
121 if (ip->class == ButtonClass) {
122 nbuttons = ((XButtonInfoPtr)ip)->num_buttons;
125 ip = (XAnyClassPtr) ((char *) ip + ip->length);
128 fprintf(stderr, "device has no buttons\n");
132 device = XOpenDevice(display, info->id);
138 map = (unsigned char *) malloc(sizeof(unsigned char) * nbuttons);
140 XGetDeviceButtonMapping(display, device, map, nbuttons);
142 min = (argc > nbuttons + 1) ? nbuttons + 1 : argc;
144 for(idx=1; idx < min; idx++) {
145 map[idx - 1] = atoi(argv[idx]);
147 XSetDeviceButtonMapping(display, device, map, nbuttons);
148 XCloseDevice(display, device);
151 fprintf(stderr, "Unable to open device\n");
156 /* end of buttonmap.c */