mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
virtio-input: emulated devices [device]
This patch adds the virtio-input-hid base class and virtio-{keyboard,mouse,tablet} subclasses building on the base class. They are hooked up to the qemu input core and deliver input events to the guest like all other hid devices (ps/2 kbd, usb tablet, ...). Using them is as simple as adding "-device virtio-tablet-device" to your command line, for use all transports except pci. virtio-pci support comes as separate patch, once virtio-pci got virtio 1.0 support. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
f73ddbad39
commit
55a1d80a41
3 changed files with 524 additions and 0 deletions
|
@ -34,9 +34,23 @@ typedef struct virtio_input_event virtio_input_event;
|
|||
#define VIRTIO_INPUT_CLASS(klass) \
|
||||
OBJECT_CLASS_CHECK(VirtIOInputClass, klass, TYPE_VIRTIO_INPUT)
|
||||
|
||||
#define TYPE_VIRTIO_INPUT_HID "virtio-input-hid"
|
||||
#define TYPE_VIRTIO_KEYBOARD "virtio-keyboard"
|
||||
#define TYPE_VIRTIO_MOUSE "virtio-mouse"
|
||||
#define TYPE_VIRTIO_TABLET "virtio-tablet"
|
||||
|
||||
#define VIRTIO_INPUT_HID(obj) \
|
||||
OBJECT_CHECK(VirtIOInputHID, (obj), TYPE_VIRTIO_INPUT_HID)
|
||||
#define VIRTIO_INPUT_HID_GET_PARENT_CLASS(obj) \
|
||||
OBJECT_GET_PARENT_CLASS(obj, TYPE_VIRTIO_INPUT_HID)
|
||||
|
||||
#define DEFINE_VIRTIO_INPUT_PROPERTIES(_state, _field) \
|
||||
DEFINE_PROP_STRING("serial", _state, _field.serial)
|
||||
|
||||
typedef struct VirtIOInput VirtIOInput;
|
||||
typedef struct VirtIOInputClass VirtIOInputClass;
|
||||
typedef struct VirtIOInputConfig VirtIOInputConfig;
|
||||
typedef struct VirtIOInputHID VirtIOInputHID;
|
||||
|
||||
struct virtio_input_conf {
|
||||
char *serial;
|
||||
|
@ -73,6 +87,13 @@ struct VirtIOInputClass {
|
|||
void (*handle_status)(VirtIOInput *vinput, virtio_input_event *event);
|
||||
};
|
||||
|
||||
struct VirtIOInputHID {
|
||||
VirtIOInput parent_obj;
|
||||
QemuInputHandler *handler;
|
||||
QemuInputHandlerState *hs;
|
||||
int ledstate;
|
||||
};
|
||||
|
||||
void virtio_input_send(VirtIOInput *vinput, virtio_input_event *event);
|
||||
void virtio_input_init_config(VirtIOInput *vinput,
|
||||
virtio_input_config *config);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue