void s_mouserel(uSynergyCookie cookie, int16_t x, int16_t y) { if(0 == usb_request(REQ_MOUSE_REL, x, y)) { lastMouseMoveWasRelative = 1; if (debugLevel) fprintf(stderr, "mouse, rel.move x=%d y=%d\n", x, y); } }
void s_keyboard(uSynergyCookie cookie, uint16_t key, uint16_t modifiers, uSynergyBool down, uSynergyBool repeat) { int result; result = usb_request(REQ_KEYBOARD, key, down); printf("keyboard, key=%2x down=%d repeat=%d - %d\n", key, down, repeat, result); }
void usb_send_amiga_key(uint8_t amigaKey, uint8_t keyUp) { static int count = 0; const uint8_t amigaKeyUpMask = 0x80; if(0 == usb_request(REQ_KEYBOARD, amigaKey | (keyUp ? amigaKeyUpMask : 0x00) , 0)) { if (debugLevel) fprintf(stderr, "send_amiga_key, amigaKey=0x%02x keyUp=%d count=%d\n", amigaKey, keyUp, count++); } }
void mouseAbsResetToNearestCorner(uint16_t x, uint16_t y) { int mouseMoveToReset_x = x < (amigaMouseResWidth / 2) ? -amigaMouseResWidth : amigaMouseResWidth; int mouseMoveToReset_y = y < (amigaMouseResHeight / 2) ? -amigaMouseResHeight : amigaMouseResHeight; if(0 == usb_request(REQ_MOUSE_REL, mouseMoveToReset_x, mouseMoveToReset_y)) { mouse_x = mouseMoveToReset_x < 0 ? 0 : amigaMouseResWidth - 1; mouse_y = mouseMoveToReset_y < 0 ? 0 : amigaMouseResHeight - 1; if (debugLevel) fprintf(stderr, "mouse, abs.reset to x=%d y=%d\n", mouse_x, mouse_y); } }
void mouseAbsMove(uint16_t x, uint16_t y) { const int16_t diff_x = x - mouse_x; const int16_t diff_y = y - mouse_y; if(0 == usb_request(REQ_MOUSE_REL, diff_x, diff_y)) { mouse_x = x; mouse_y = y; if (debugLevel > 1) fprintf(stderr, "mouse, abs.move to x=%d y=%d\n", x, y); } }
void s_mouse(uSynergyCookie cookie, uint16_t x, uint16_t y, int16_t wheelX, int16_t wheelY, uSynergyBool buttonLeft, uSynergyBool buttonRight, uSynergyBool buttonMiddle) { static uint8_t old_mstate = 0; uint8_t mstate = (buttonLeft ? 1 : 0) | (buttonRight ? 2 : 0) | (buttonMiddle ? 4 : 0); int result; if (mstate != old_mstate) { result = usb_request(REQ_MOUSE_BTN, mstate, 0); printf("mouse, button=%d,%d,%d - %d\n", buttonLeft, buttonMiddle, buttonRight, result); old_mstate = mstate; } }
static size_t example_read(struct file_desc *desc, void *buf, size_t size) { struct usb_dev_desc *ddesc = desc->file_info; size_t actual_size; int ret; if (size > 4) { actual_size = 4; } else { actual_size = size; } ret = usb_request(ddesc, 1, USB_TOKEN_IN, buf, actual_size); if (ret < 0) { return ret; } return actual_size; }
void s_mouse(uSynergyCookie cookie, uint16_t x, uint16_t y, int16_t wheelX, int16_t wheelY, uSynergyBool buttonLeft, uSynergyBool buttonRight, uSynergyBool buttonMiddle) { static uint8_t old_mstate = 0; uint8_t mstate = (buttonLeft ? 1 : 0) | (buttonRight ? 2 : 0) | (buttonMiddle ? 4 : 0); if(mouseAbsHasMoved(x, y)) { if(lastMouseMoveWasRelative) { mouseAbsResetToNearestCorner(x, y); lastMouseMoveWasRelative = 0; } mouseAbsMove(x, y); } if (mstate != old_mstate) { if(0 == usb_request(REQ_MOUSE_BTN, mstate, 0)) { old_mstate = mstate; lastMouseMoveWasRelative = 0; if (debugLevel > 1) fprintf(stderr, "mouse, button=%d,%d,%d\n", buttonLeft, buttonMiddle, buttonRight); } } }
void s_mouserel(uSynergyCookie cookie, int16_t x, int16_t y) { int result; result = usb_request(REQ_MOUSE_REL, x, y); printf("mouse, rel=%d, %d - %d\n", x, y, result); }