Lines Matching +full:tablet +full:- +full:mode

2  * Wacom PenPartner USB tablet emulation.
7 * Based on hw/usb-hid.c:
52 } mode; member
57 #define TYPE_USB_WACOM "usb-wacom-tablet"
94 0x15, 0x81, /* Logical Minimum (-127) */
108 0x06, 0x00, 0xff,/* Usage Page (ff00h), vendor-defined */
196 s->dx += dx1; in usb_mouse_event()
197 s->dy += dy1; in usb_mouse_event()
198 s->dz += dz1; in usb_mouse_event()
199 s->buttons_state = buttons_state; in usb_mouse_event()
200 s->changed = 1; in usb_mouse_event()
201 usb_wakeup(s->intr, 0); in usb_mouse_event()
210 s->x = (x * 5040 / 0x7FFF); in usb_wacom_event()
211 s->y = (y * 3780 / 0x7FFF); in usb_wacom_event()
212 s->dz += dz; in usb_wacom_event()
213 s->buttons_state = buttons_state; in usb_wacom_event()
214 s->changed = 1; in usb_wacom_event()
215 usb_wakeup(s->intr, 0); in usb_wacom_event()
232 if (!s->mouse_grabbed) { in usb_mouse_poll()
233 s->eh_entry = qemu_add_mouse_event_handler(usb_mouse_event, s, 0, in usb_mouse_poll()
234 "QEMU PenPartner tablet"); in usb_mouse_poll()
235 qemu_activate_mouse_event_handler(s->eh_entry); in usb_mouse_poll()
236 s->mouse_grabbed = 1; in usb_mouse_poll()
239 dx = int_clamp(s->dx, -128, 127); in usb_mouse_poll()
240 dy = int_clamp(s->dy, -128, 127); in usb_mouse_poll()
241 dz = int_clamp(s->dz, -128, 127); in usb_mouse_poll()
243 s->dx -= dx; in usb_mouse_poll()
244 s->dy -= dy; in usb_mouse_poll()
245 s->dz -= dz; in usb_mouse_poll()
248 if (s->buttons_state & MOUSE_EVENT_LBUTTON) in usb_mouse_poll()
250 if (s->buttons_state & MOUSE_EVENT_RBUTTON) in usb_mouse_poll()
252 if (s->buttons_state & MOUSE_EVENT_MBUTTON) in usb_mouse_poll()
270 if (!s->mouse_grabbed) { in usb_wacom_poll()
271 s->eh_entry = qemu_add_mouse_event_handler(usb_wacom_event, s, 1, in usb_wacom_poll()
272 "QEMU PenPartner tablet"); in usb_wacom_poll()
273 qemu_activate_mouse_event_handler(s->eh_entry); in usb_wacom_poll()
274 s->mouse_grabbed = 1; in usb_wacom_poll()
278 if (s->buttons_state & MOUSE_EVENT_LBUTTON) in usb_wacom_poll()
280 if (s->buttons_state & MOUSE_EVENT_RBUTTON) in usb_wacom_poll()
282 if (s->buttons_state & MOUSE_EVENT_MBUTTON) in usb_wacom_poll()
288 buf[0] = s->mode; in usb_wacom_poll()
290 buf[1] = s->x & 0xff; in usb_wacom_poll()
291 buf[2] = s->x >> 8; in usb_wacom_poll()
292 buf[3] = s->y & 0xff; in usb_wacom_poll()
293 buf[4] = s->y >> 8; in usb_wacom_poll()
297 buf[6] = (unsigned char) -127; in usb_wacom_poll()
307 s->dx = 0; in usb_wacom_handle_reset()
308 s->dy = 0; in usb_wacom_handle_reset()
309 s->dz = 0; in usb_wacom_handle_reset()
310 s->x = 0; in usb_wacom_handle_reset()
311 s->y = 0; in usb_wacom_handle_reset()
312 s->buttons_state = 0; in usb_wacom_handle_reset()
313 s->mode = WACOM_MODE_HID; in usb_wacom_handle_reset()
333 p->actual_length = sizeof(qemu_wacom_hid_report_descriptor); in usb_wacom_handle_control()
340 if (s->mouse_grabbed) { in usb_wacom_handle_control()
341 qemu_remove_mouse_event_handler(s->eh_entry); in usb_wacom_handle_control()
342 s->mouse_grabbed = 0; in usb_wacom_handle_control()
344 s->mode = data[0]; in usb_wacom_handle_control()
348 data[1] = s->mode; in usb_wacom_handle_control()
349 p->actual_length = 2; in usb_wacom_handle_control()
353 if (s->mode == WACOM_MODE_HID) in usb_wacom_handle_control()
354 p->actual_length = usb_mouse_poll(s, data, length); in usb_wacom_handle_control()
355 else if (s->mode == WACOM_MODE_WACOM) in usb_wacom_handle_control()
356 p->actual_length = usb_wacom_poll(s, data, length); in usb_wacom_handle_control()
359 data[0] = s->idle; in usb_wacom_handle_control()
360 p->actual_length = 1; in usb_wacom_handle_control()
363 s->idle = (uint8_t) (value >> 8); in usb_wacom_handle_control()
366 p->status = USB_RET_STALL; in usb_wacom_handle_control()
374 g_autofree uint8_t *buf = g_malloc(p->iov.size); in usb_wacom_handle_data()
377 switch (p->pid) { in usb_wacom_handle_data()
379 if (p->ep->nr == 1) { in usb_wacom_handle_data()
380 if (!(s->changed || s->idle)) { in usb_wacom_handle_data()
381 p->status = USB_RET_NAK; in usb_wacom_handle_data()
384 s->changed = 0; in usb_wacom_handle_data()
385 if (s->mode == WACOM_MODE_HID) in usb_wacom_handle_data()
386 len = usb_mouse_poll(s, buf, p->iov.size); in usb_wacom_handle_data()
387 else if (s->mode == WACOM_MODE_WACOM) in usb_wacom_handle_data()
388 len = usb_wacom_poll(s, buf, p->iov.size); in usb_wacom_handle_data()
395 p->status = USB_RET_STALL; in usb_wacom_handle_data()
403 if (s->mouse_grabbed) { in usb_wacom_unrealize()
404 qemu_remove_mouse_event_handler(s->eh_entry); in usb_wacom_unrealize()
405 s->mouse_grabbed = 0; in usb_wacom_unrealize()
414 s->intr = usb_ep_get(dev, USB_TOKEN_IN, 1); in usb_wacom_realize()
415 s->changed = 1; in usb_wacom_realize()
419 .name = "usb-wacom",
428 uc->product_desc = "QEMU PenPartner Tablet"; in usb_wacom_class_init()
429 uc->usb_desc = &desc_wacom; in usb_wacom_class_init()
430 uc->realize = usb_wacom_realize; in usb_wacom_class_init()
431 uc->handle_reset = usb_wacom_handle_reset; in usb_wacom_class_init()
432 uc->handle_control = usb_wacom_handle_control; in usb_wacom_class_init()
433 uc->handle_data = usb_wacom_handle_data; in usb_wacom_class_init()
434 uc->unrealize = usb_wacom_unrealize; in usb_wacom_class_init()
435 set_bit(DEVICE_CATEGORY_INPUT, dc->categories); in usb_wacom_class_init()
436 dc->desc = "QEMU PenPartner Tablet"; in usb_wacom_class_init()
437 dc->vmsd = &vmstate_usb_wacom; in usb_wacom_class_init()
450 usb_legacy_register(TYPE_USB_WACOM, "wacom-tablet", NULL); in usb_wacom_register_types()