]> diplodocus.org Git - xorg-xinput/blobdiff - src/feedback.c
Let autoconf substitute the VERSION.
[xorg-xinput] / src / feedback.c
index 554642e..e374be2 100644 (file)
@@ -23,8 +23,6 @@
 
 #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,
@@ -35,6 +33,10 @@ set_ptr_feedback(Display     *display,
     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);
@@ -54,10 +56,25 @@ set_ptr_feedback(Display    *display,
        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]);
@@ -115,7 +132,7 @@ get_feedbacks(Display       *display,
        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);
@@ -126,7 +143,7 @@ get_feedbacks(Display       *display,
            
        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);            
@@ -134,14 +151,14 @@ get_feedbacks(Display     *display,
 
        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);
@@ -149,13 +166,13 @@ get_feedbacks(Display     *display,
 
        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);      
@@ -166,5 +183,4 @@ get_feedbacks(Display       *display,
     return EXIT_SUCCESS;
 }
 
-/* end of ptrfdbk.c
-*/
+/* end of ptrfdbk.c */