diff options
Diffstat (limited to 'src/XGetFCtl.c')
-rw-r--r-- | src/XGetFCtl.c | 337 |
1 files changed, 169 insertions, 168 deletions
diff --git a/src/XGetFCtl.c b/src/XGetFCtl.c index e34c7ce..1e90633 100644 --- a/src/XGetFCtl.c +++ b/src/XGetFCtl.c @@ -61,213 +61,214 @@ SOFTWARE. #include <X11/extensions/extutil.h> #include "XIint.h" -XFeedbackState -*XGetFeedbackControl (dpy, dev, num_feedbacks) - register Display *dpy; - XDevice *dev; - int *num_feedbacks; - { - int size = 0; - int nbytes, i; +XFeedbackState * XGetFeedbackControl(dpy, dev, num_feedbacks) + register Display * + dpy; + XDevice * + dev; + int * + num_feedbacks; +{ + int size = 0; + int nbytes, i; XFeedbackState *Feedback = NULL; XFeedbackState *Sav = NULL; xFeedbackState *f = NULL; xFeedbackState *sav = NULL; xGetFeedbackControlReq *req; xGetFeedbackControlReply rep; - XExtDisplayInfo *info = XInput_find_display (dpy); + XExtDisplayInfo *info = XInput_find_display(dpy); - LockDisplay (dpy); + LockDisplay(dpy); if (_XiCheckExtInit(dpy, XInput_Initial_Release) == -1) return ((XFeedbackState *) NoSuchExtension); - GetReq(GetFeedbackControl,req); + GetReq(GetFeedbackControl, req); req->reqType = info->codes->major_opcode; req->ReqType = X_GetFeedbackControl; req->deviceid = dev->device_id; - if (! _XReply (dpy, (xReply *) &rep, 0, xFalse)) - { + if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) { UnlockDisplay(dpy); SyncHandle(); return (XFeedbackState *) NULL; - } - if (rep.length > 0) - { + } + if (rep.length > 0) { *num_feedbacks = rep.num_feedbacks; nbytes = (long)rep.length << 2; - f = (xFeedbackState *) Xmalloc((unsigned) nbytes); - if (!f) - { - _XEatData (dpy, (unsigned long) nbytes); + f = (xFeedbackState *) Xmalloc((unsigned)nbytes); + if (!f) { + _XEatData(dpy, (unsigned long)nbytes); UnlockDisplay(dpy); SyncHandle(); return (XFeedbackState *) NULL; - } + } sav = f; - _XRead (dpy, (char *) f, nbytes); + _XRead(dpy, (char *)f, nbytes); - for (i=0; i<*num_feedbacks; i++) + for (i = 0; i < *num_feedbacks; i++) { + switch (f->class) { + case KbdFeedbackClass: + size += sizeof(XKbdFeedbackState); + break; + case PtrFeedbackClass: + size += sizeof(XPtrFeedbackState); + break; + case IntegerFeedbackClass: + size += sizeof(XIntegerFeedbackState); + break; + case StringFeedbackClass: { - switch (f->class) - { - case KbdFeedbackClass: - size += sizeof (XKbdFeedbackState); - break; - case PtrFeedbackClass: - size += sizeof (XPtrFeedbackState); - break; - case IntegerFeedbackClass: - size += sizeof (XIntegerFeedbackState); - break; - case StringFeedbackClass: - { - xStringFeedbackState *strf = (xStringFeedbackState *) f; - - size += sizeof (XStringFeedbackState) + - (strf->num_syms_supported * sizeof (KeySym)); - } - break; - case LedFeedbackClass: - size += sizeof (XLedFeedbackState); - break; - case BellFeedbackClass: - size += sizeof (XBellFeedbackState); - break; - default: - size += f->length; - break; - } - f = (xFeedbackState *) ((char *) f + f->length); + xStringFeedbackState *strf = (xStringFeedbackState *) f; + + size += sizeof(XStringFeedbackState) + + (strf->num_syms_supported * sizeof(KeySym)); + } + break; + case LedFeedbackClass: + size += sizeof(XLedFeedbackState); + break; + case BellFeedbackClass: + size += sizeof(XBellFeedbackState); + break; + default: + size += f->length; + break; } + f = (xFeedbackState *) ((char *)f + f->length); + } - Feedback = (XFeedbackState *) Xmalloc((unsigned) size); - if (!Feedback) - { + Feedback = (XFeedbackState *) Xmalloc((unsigned)size); + if (!Feedback) { UnlockDisplay(dpy); SyncHandle(); return (XFeedbackState *) NULL; - } + } Sav = Feedback; f = sav; - for (i=0; i<*num_feedbacks; i++) + for (i = 0; i < *num_feedbacks; i++) { + switch (f->class) { + case KbdFeedbackClass: { - switch (f->class) - { - case KbdFeedbackClass: - { - xKbdFeedbackState *k; - XKbdFeedbackState *K; - k = (xKbdFeedbackState *) f; - K = (XKbdFeedbackState *) Feedback; - - K->class = k->class; - K->length = sizeof (XKbdFeedbackState); - K->id = k->id; - K->click = k->click; - K->percent = k->percent; - K->pitch = k->pitch; - K->duration = k->duration; - K->led_mask = k->led_mask; - K->global_auto_repeat = k->global_auto_repeat; - memcpy ((char *) &K->auto_repeats[0], - (char *) &k->auto_repeats[0], 32); - break; - } - case PtrFeedbackClass: - { - xPtrFeedbackState *p; - XPtrFeedbackState *P; - p = (xPtrFeedbackState *) f; - P = (XPtrFeedbackState *) Feedback; - - P->class = p->class; - P->length = sizeof (XPtrFeedbackState); - P->id = p->id; - P->accelNum = p->accelNum; - P->accelDenom = p->accelDenom; - P->threshold = p->threshold; - break; - } - case IntegerFeedbackClass: - { - xIntegerFeedbackState *i; - XIntegerFeedbackState *I; - i = (xIntegerFeedbackState *) f; - I = (XIntegerFeedbackState *) Feedback; - - I->class = i->class; - I->length = sizeof (XIntegerFeedbackState); - I->id = i->id; - I->resolution = i->resolution; - I->minVal = i->min_value; - I->maxVal = i->max_value; - break; - } - case StringFeedbackClass: - { - xStringFeedbackState *s; - XStringFeedbackState *S; - s = (xStringFeedbackState *) f; - S = (XStringFeedbackState *) Feedback; - - S->class = s->class; - S->length = sizeof (XStringFeedbackState) + - (s->num_syms_supported * sizeof (KeySym)); - S->id = s->id; - S->max_symbols = s->max_symbols; - S->num_syms_supported = s->num_syms_supported; - S->syms_supported = (KeySym *) (S+1); - memcpy ((char *) S->syms_supported, (char *) (s+1), - (S->num_syms_supported * sizeof (KeySym))); - break; - } - case LedFeedbackClass: - { - xLedFeedbackState *l; - XLedFeedbackState *L; - l = (xLedFeedbackState *) f; - L = (XLedFeedbackState *) Feedback; - - L->class = l->class; - L->length = sizeof (XLedFeedbackState); - L->id = l->id; - L->led_values = l->led_values; - L->led_mask = l->led_mask; - break; - } - case BellFeedbackClass: - { - xBellFeedbackState *b; - XBellFeedbackState *B; - b = (xBellFeedbackState *) f; - B = (XBellFeedbackState *) Feedback; - - B->class = b->class; - B->length = sizeof (XBellFeedbackState); - B->id = b->id; - B->percent = b->percent; - B->pitch = b->pitch; - B->duration = b->duration; - break; - } - default: - break; - } - f = (xFeedbackState *) ((char *) f + f->length); - Feedback = (XFeedbackState *) ((char *) Feedback+Feedback->length); + xKbdFeedbackState *k; + XKbdFeedbackState *K; + + k = (xKbdFeedbackState *) f; + K = (XKbdFeedbackState *) Feedback; + + K->class = k->class; + K->length = sizeof(XKbdFeedbackState); + K->id = k->id; + K->click = k->click; + K->percent = k->percent; + K->pitch = k->pitch; + K->duration = k->duration; + K->led_mask = k->led_mask; + K->global_auto_repeat = k->global_auto_repeat; + memcpy((char *)&K->auto_repeats[0], + (char *)&k->auto_repeats[0], 32); + break; } - XFree ((char *)sav); + case PtrFeedbackClass: + { + xPtrFeedbackState *p; + XPtrFeedbackState *P; + + p = (xPtrFeedbackState *) f; + P = (XPtrFeedbackState *) Feedback; + + P->class = p->class; + P->length = sizeof(XPtrFeedbackState); + P->id = p->id; + P->accelNum = p->accelNum; + P->accelDenom = p->accelDenom; + P->threshold = p->threshold; + break; + } + case IntegerFeedbackClass: + { + xIntegerFeedbackState *i; + XIntegerFeedbackState *I; + + i = (xIntegerFeedbackState *) f; + I = (XIntegerFeedbackState *) Feedback; + + I->class = i->class; + I->length = sizeof(XIntegerFeedbackState); + I->id = i->id; + I->resolution = i->resolution; + I->minVal = i->min_value; + I->maxVal = i->max_value; + break; + } + case StringFeedbackClass: + { + xStringFeedbackState *s; + XStringFeedbackState *S; + + s = (xStringFeedbackState *) f; + S = (XStringFeedbackState *) Feedback; + + S->class = s->class; + S->length = sizeof(XStringFeedbackState) + + (s->num_syms_supported * sizeof(KeySym)); + S->id = s->id; + S->max_symbols = s->max_symbols; + S->num_syms_supported = s->num_syms_supported; + S->syms_supported = (KeySym *) (S + 1); + memcpy((char *)S->syms_supported, (char *)(s + 1), + (S->num_syms_supported * sizeof(KeySym))); + break; + } + case LedFeedbackClass: + { + xLedFeedbackState *l; + XLedFeedbackState *L; + + l = (xLedFeedbackState *) f; + L = (XLedFeedbackState *) Feedback; + + L->class = l->class; + L->length = sizeof(XLedFeedbackState); + L->id = l->id; + L->led_values = l->led_values; + L->led_mask = l->led_mask; + break; + } + case BellFeedbackClass: + { + xBellFeedbackState *b; + XBellFeedbackState *B; + + b = (xBellFeedbackState *) f; + B = (XBellFeedbackState *) Feedback; + + B->class = b->class; + B->length = sizeof(XBellFeedbackState); + B->id = b->id; + B->percent = b->percent; + B->pitch = b->pitch; + B->duration = b->duration; + break; + } + default: + break; + } + f = (xFeedbackState *) ((char *)f + f->length); + Feedback = (XFeedbackState *) ((char *)Feedback + Feedback->length); } + XFree((char *)sav); + } UnlockDisplay(dpy); SyncHandle(); return (Sav); - } +} -void XFreeFeedbackList (list) +void +XFreeFeedbackList(list) XFeedbackState *list; - { - XFree ((char *)list); - } +{ + XFree((char *)list); +} |