#include "xinput.h"
-static const char rcs_id[] = "$Id: feedback.c,v 1.2 1996/12/19 19:40:41 fred Exp $";
-
int
set_ptr_feedback(Display *display,
int argc,
XDeviceInfo *info;
XDevice *device;
XPtrFeedbackControl feedback;
+ XFeedbackState *state;
+ int num_feedbacks;
+ int loop;
+ int id;
if (argc != 4) {
fprintf(stderr, "usage: xinput %s %s\n", name, desc);
fprintf(stderr, "unable to open device %s\n", argv[0]);
return 1;
}
+
+ /* We will match the first Ptr Feedback class. Can there be more? */
+ id = -1;
+ state = XGetFeedbackControl(display, device, &num_feedbacks);
+ for(loop=0; loop<num_feedbacks; loop++) {
+ if (state->class == PtrFeedbackClass) {
+ id = state->id;
+ }
+ state = (XFeedbackState*) ((char*) state + state->length);
+ }
+
+ if (id == -1) {
+ fprintf(stderr, "unable to find PtrFeedbackClass for %s\n", argv[0]);
+ return 1;
+ }
feedback.class = PtrFeedbackClass;
feedback.length = sizeof(XPtrFeedbackControl);
- feedback.id = 0;
+ feedback.id = id;
feedback.threshold = atoi(argv[1]);
feedback.accelNum = atoi(argv[2]);
feedback.accelDenom = atoi(argv[3]);
switch (state->class) {
case KbdFeedbackClass:
k = (XKbdFeedbackState*) state;
- printf("KbdFeedbackClass id=%d\n", state->id);
+ printf("KbdFeedbackClass id=%ld\n", state->id);
printf("\tclick is %d\n", k->click);
printf("\tpercent is %d\n", k->percent);
printf("\tpitch is %d\n", k->pitch);
case PtrFeedbackClass:
p = (XPtrFeedbackState*) state;
- printf("PtrFeedbackClass id=%d\n", state->id);
+ printf("PtrFeedbackClass id=%ld\n", state->id);
printf("\taccelNum is %d\n", p->accelNum);
printf("\taccelDenom is %d\n", p->accelDenom);
printf("\tthreshold is %d\n", p->threshold);
case StringFeedbackClass:
s = (XStringFeedbackState*) state;
- printf("XStringFeedbackControl id=%d\n", state->id);
+ printf("XStringFeedbackControl id=%ld\n", state->id);
printf("\tmax_symbols is %d\n", s->max_symbols);
printf("\tnum_syms_supported is %d\n", s->num_syms_supported);
break;
case IntegerFeedbackClass:
i = (XIntegerFeedbackState*) state;
- printf("XIntegerFeedbackControl id=%d\n", state->id);
+ printf("XIntegerFeedbackControl id=%ld\n", state->id);
printf("\tresolution is %d\n", i->resolution);
printf("\tminVal is %d\n", i->minVal);
printf("\tmaxVal is %d\n", i->maxVal);
case LedFeedbackClass:
l = (XLedFeedbackState*) state;
- printf("XLedFeedbackState id=%d\n", state->id);
+ printf("XLedFeedbackState id=%ld\n", state->id);
printf("\tled_values is %d\n", l->led_values);
break;
case BellFeedbackClass:
b = (XBellFeedbackState*) state;
- printf("XBellFeedbackControl id=%d\n", state->id);
+ printf("XBellFeedbackControl id=%ld\n", state->id);
printf("\tpercent is %d\n", b->percent);
printf("\tpitch is %d\n", b->pitch);
printf("\tduration is %d\n", b->duration);
return EXIT_SUCCESS;
}
-/* end of ptrfdbk.c
-*/
+/* end of ptrfdbk.c */