mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 01:33:56 -06:00
usb-hid: split hid code to hw/hid.[ch]
Almost pure code motion. Unstatic hid interface functions and add them to the header file. Some renames. Some code style cleanups. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
38931fa8cf
commit
dcfda67310
4 changed files with 452 additions and 395 deletions
54
hw/hid.h
Normal file
54
hw/hid.h
Normal file
|
@ -0,0 +1,54 @@
|
|||
#ifndef QEMU_HID_H
|
||||
#define QEMU_HID_H
|
||||
|
||||
#define HID_MOUSE 1
|
||||
#define HID_TABLET 2
|
||||
#define HID_KEYBOARD 3
|
||||
|
||||
typedef struct HIDPointerEvent {
|
||||
int32_t xdx, ydy; /* relative iff it's a mouse, otherwise absolute */
|
||||
int32_t dz, buttons_state;
|
||||
} HIDPointerEvent;
|
||||
|
||||
#define QUEUE_LENGTH 16 /* should be enough for a triple-click */
|
||||
#define QUEUE_MASK (QUEUE_LENGTH-1u)
|
||||
#define QUEUE_INCR(v) ((v)++, (v) &= QUEUE_MASK)
|
||||
|
||||
typedef struct HIDState HIDState;
|
||||
typedef void (*HIDEventFunc)(HIDState *s);
|
||||
|
||||
typedef struct HIDMouseState {
|
||||
HIDPointerEvent queue[QUEUE_LENGTH];
|
||||
int mouse_grabbed;
|
||||
QEMUPutMouseEntry *eh_entry;
|
||||
} HIDMouseState;
|
||||
|
||||
typedef struct HIDKeyboardState {
|
||||
uint32_t keycodes[QUEUE_LENGTH];
|
||||
uint16_t modifiers;
|
||||
uint8_t leds;
|
||||
uint8_t key[16];
|
||||
int32_t keys;
|
||||
} HIDKeyboardState;
|
||||
|
||||
struct HIDState {
|
||||
union {
|
||||
HIDMouseState ptr;
|
||||
HIDKeyboardState kbd;
|
||||
};
|
||||
uint32_t head; /* index into circular queue */
|
||||
uint32_t n;
|
||||
int kind;
|
||||
HIDEventFunc event;
|
||||
};
|
||||
|
||||
void hid_init(HIDState *hs, int kind, HIDEventFunc event);
|
||||
void hid_reset(HIDState *hs);
|
||||
void hid_free(HIDState *hs);
|
||||
|
||||
bool hid_has_events(HIDState *hs);
|
||||
int hid_pointer_poll(HIDState *hs, uint8_t *buf, int len);
|
||||
int hid_keyboard_poll(HIDState *hs, uint8_t *buf, int len);
|
||||
int hid_keyboard_write(HIDState *hs, uint8_t *buf, int len);
|
||||
|
||||
#endif /* QEMU_HID_H */
|
Loading…
Add table
Add a link
Reference in a new issue