10 #if defined(VRPN_USE_HID)
13 static const vrpn_uint16 XKEYS_VENDOR = 0x05F3;
14 static const vrpn_uint16 XKEYS_DESKTOP = 0x0281;
15 static const vrpn_uint16 XKEYS_JOG_AND_SHUTTLE = 0x0241;
16 static const vrpn_uint16 XKEYS_PRO = 0x0291;
17 static const vrpn_uint16 XKEYS_JOYSTICK = 0x0251;
18 static const vrpn_uint16 XKEYS_XK3 = 0x042C;
24 , _toggle_light(toggle_light)
34 vrpn_uint8 outputs[9] = {0};
49 vrpn_uint8 outputs[9] = {0};
62 vrpn_Xkeys *me = static_cast<vrpn_Xkeys *>(thisPtr);
65 vrpn_uint8 outputs[9] = {0};
74 vrpn_Xkeys *me = static_cast<vrpn_Xkeys *>(thisPtr);
78 vrpn_uint8 outputs[9] = {0};
121 for (
size_t i = 0; i < bytes / 11; i++) {
122 vrpn_uint8 *
report = buffer + (i * 11);
124 if (!(
report[10] & 0x08)) {
126 fprintf(stderr,
"vrpn_Xkeys_Desktop: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
134 for (
int btn = 0; btn < 20; btn++) {
135 vrpn_uint8 *offset, mask;
137 offset =
report + btn / 5;
138 mask = static_cast<vrpn_uint8>(1 << (btn % 5));
140 buttons[btn + 1] = (*offset & mask) != 0;
211 channel[0] = static_cast<float>(static_cast<signed char>(buffer[0])) / 7.0;
212 channel[1] = static_cast<float>(buffer[1]);
227 for (
int btn = 0; btn < 35; btn++) {
228 vrpn_uint8 *offset, mask;
230 offset = buffer + btn / 7 + 3;
231 mask = static_cast<vrpn_uint8>(1 << (btn % 7));
233 buttons[btn + 1] = (*offset & mask) != 0;
236 }
else if (bytes == 6) {
238 if (!(buffer[5] & 0x08)) {
240 fprintf(stderr,
"vrpn_Xkeys: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
245 buttons[0] = (buffer[5] & 0x10) != 0;
251 for (
int btn = 35; btn < 58; btn++) {
252 vrpn_uint8 *offset, mask;
253 int local_btn = btn - 35;
255 offset = buffer + local_btn / 7;
256 mask = static_cast<vrpn_uint8>(1 << (local_btn % 7));
258 buttons[btn + 1] = (*offset & mask) != 0;
261 }
else if (bytes == 14) {
266 for (i = 0; i < bytes / 14; i++) {
267 vrpn_uint8 *
report = buffer + (i * 14);
269 if (!(
report[13] & 0x08)) {
271 fprintf(stderr,
"vrpn_Xkeys: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
281 for (
int btn = 0; btn < 58; btn++) {
282 vrpn_uint8 *offset, mask;
284 offset =
report + btn / 7 + 3;
285 mask = static_cast<vrpn_uint8>(1 << (btn % 7));
287 buttons[btn + 1] = (*offset & mask) != 0;
294 channel[0] = static_cast<float>(static_cast<signed char>(
report[0])) / 7.0;
306 fprintf(stderr,
"vrpn_Xkeys_Jog_And_Shuttle::decodePacket(): Unrecognized packet length (%u)\n", static_cast<unsigned>(bytes));
366 channel[0] = (static_cast<float>(buffer[0]) - 128) / 128.0;
367 channel[1] = (static_cast<float>(buffer[1]) - 128) / 128.0;
368 channel[2] = (static_cast<float>(buffer[2]) - 128) / 128.0;
376 for (
int btn = 0; btn < 35; btn++) {
377 vrpn_uint8 *offset, mask;
379 offset = buffer + btn / 7 + 3;
380 mask = static_cast<vrpn_uint8>(1 << (btn % 7));
382 buttons[btn + 1] = (*offset & mask) != 0;
385 }
else if (bytes == 6) {
387 if (!(buffer[5] & 0x08)) {
389 fprintf(stderr,
"vrpn_Xkeys: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
394 buttons[0] = (buffer[5] & 0x10) != 0;
400 for (
int btn = 35; btn < 58; btn++) {
401 vrpn_uint8 *offset, mask;
402 int local_btn = btn - 35;
404 offset = buffer + local_btn / 7;
405 mask = static_cast<vrpn_uint8>(1 << (local_btn % 7));
407 buttons[btn + 1] = (*offset & mask) != 0;
410 }
else if (bytes == 14) {
415 for (i = 0; i < bytes / 14; i++) {
416 vrpn_uint8 *
report = buffer + (i * 14);
418 if (!(
report[13] & 0x08)) {
420 fprintf(stderr,
"vrpn_Xkeys: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
430 for (
int btn = 0; btn < 58; btn++) {
431 vrpn_uint8 *offset, mask;
433 offset =
report + btn / 7 + 3;
434 mask = static_cast<vrpn_uint8>(1 << (btn % 7));
436 buttons[btn + 1] = (*offset & mask) != 0;
445 fprintf(stderr,
"vrpn_Xkeys_Joystick::decodePacket(): Unrecognized packet length (%u)\n", static_cast<unsigned>(bytes));
499 for (
int btn = 0; btn < 35; btn++) {
500 vrpn_uint8 *offset, mask;
502 offset = buffer + btn / 7 + 3;
503 mask = static_cast<vrpn_uint8>(1 << (btn % 7));
505 buttons[btn + 1] = (*offset & mask) != 0;
508 }
else if (bytes == 6) {
510 if (!(buffer[5] & 0x08)) {
512 fprintf(stderr,
"vrpn_Xkeys: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
517 buttons[0] = (buffer[5] & 0x10) != 0;
523 for (
int btn = 35; btn < 58; btn++) {
524 vrpn_uint8 *offset, mask;
525 int local_btn = btn - 35;
527 offset = buffer + local_btn / 7;
528 mask = static_cast<vrpn_uint8>(1 << (local_btn % 7));
530 buttons[btn + 1] = (*offset & mask) != 0;
533 }
else if (bytes == 14) {
540 for (i = 0; i < bytes / 14; i++) {
541 vrpn_uint8 *
report = buffer + (i * 14);
543 if (!(
report[13] & 0x08)) {
545 fprintf(stderr,
"vrpn_Xkeys: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));
555 for (
int btn = 0; btn < 58; btn++) {
556 vrpn_uint8 *offset, mask;
558 offset = buffer + btn / 7 + 3;
559 mask = static_cast<vrpn_uint8>(1 << (btn % 7));
561 buttons[btn + 1] = (*offset & mask) != 0;
565 fprintf(stderr,
"vrpn_Xkeys_Pro::decodePacket(): Unrecognized packet length (%u)\n", static_cast<unsigned>(bytes));
606 for (
size_t i = 0; i < bytes / 32; i++) {
607 vrpn_uint8 *
report = buffer + (i * 32);
613 fprintf(stderr,
"vrpn_Xkeys_XK3: Found a corrupted report; # total bytes = %u\n", static_cast<unsigned>(bytes));