configure | 4 +
meson_options.txt | 2 +
hw/usb/canokey.h | 69 ++++++
include/hw/virtio/virtio-gpu.h | 1 +
include/ui/console.h | 4 +-
include/ui/gtk.h | 2 +-
hw/display/virtio-gpu-base.c | 7 +-
hw/display/virtio-gpu.c | 4 +
hw/display/virtio-vga.c | 5 +-
hw/display/xenfb.c | 14 +-
hw/usb/canokey.c | 313 ++++++++++++++++++++++++++++
hw/usb/hcd-ehci.c | 5 +-
hw/usb/redirect.c | 3 +-
hw/vfio/display.c | 8 +-
ui/console.c | 6 -
ui/gtk-egl.c | 4 +-
ui/gtk-gl-area.c | 42 +++-
ui/gtk.c | 45 ++--
MAINTAINERS | 8 +
docs/system/device-emulation.rst | 1 +
docs/system/devices/canokey.rst | 168 +++++++++++++++
docs/system/devices/usb.rst | 4 +
hw/usb/Kconfig | 5 +
hw/usb/meson.build | 5 +
hw/usb/trace-events | 16 ++
meson.build | 6 +
pc-bios/meson.build | 1 -
scripts/meson-buildoptions.sh | 3 +
ui/cocoa.m | 6 +-
{pc-bios => ui}/keymaps/ar | 0
{pc-bios => ui}/keymaps/bepo | 0
{pc-bios => ui}/keymaps/cz | 0
{pc-bios => ui}/keymaps/da | 0
{pc-bios => ui}/keymaps/de | 0
{pc-bios => ui}/keymaps/de-ch | 0
{pc-bios => ui}/keymaps/en-gb | 0
{pc-bios => ui}/keymaps/en-us | 0
{pc-bios => ui}/keymaps/es | 0
{pc-bios => ui}/keymaps/et | 0
{pc-bios => ui}/keymaps/fi | 0
{pc-bios => ui}/keymaps/fo | 0
{pc-bios => ui}/keymaps/fr | 0
{pc-bios => ui}/keymaps/fr-be | 0
{pc-bios => ui}/keymaps/fr-ca | 0
{pc-bios => ui}/keymaps/fr-ch | 0
{pc-bios => ui}/keymaps/hr | 0
{pc-bios => ui}/keymaps/hu | 0
{pc-bios => ui}/keymaps/is | 0
{pc-bios => ui}/keymaps/it | 0
{pc-bios => ui}/keymaps/ja | 0
{pc-bios => ui}/keymaps/lt | 0
{pc-bios => ui}/keymaps/lv | 0
{pc-bios => ui}/keymaps/meson.build | 0
{pc-bios => ui}/keymaps/mk | 0
{pc-bios => ui}/keymaps/nl | 0
{pc-bios => ui}/keymaps/no | 0
{pc-bios => ui}/keymaps/pl | 0
{pc-bios => ui}/keymaps/pt | 0
{pc-bios => ui}/keymaps/pt-br | 0
{pc-bios => ui}/keymaps/ru | 0
{pc-bios => ui}/keymaps/sl | 0
{pc-bios => ui}/keymaps/sv | 0
{pc-bios => ui}/keymaps/th | 0
{pc-bios => ui}/keymaps/tr | 0
ui/meson.build | 1 +
ui/trace-events | 2 +
66 files changed, 712 insertions(+), 52 deletions(-)
create mode 100644 hw/usb/canokey.h
create mode 100644 hw/usb/canokey.c
create mode 100644 docs/system/devices/canokey.rst
rename {pc-bios => ui}/keymaps/ar (100%)
rename {pc-bios => ui}/keymaps/bepo (100%)
rename {pc-bios => ui}/keymaps/cz (100%)
rename {pc-bios => ui}/keymaps/da (100%)
rename {pc-bios => ui}/keymaps/de (100%)
rename {pc-bios => ui}/keymaps/de-ch (100%)
rename {pc-bios => ui}/keymaps/en-gb (100%)
rename {pc-bios => ui}/keymaps/en-us (100%)
rename {pc-bios => ui}/keymaps/es (100%)
rename {pc-bios => ui}/keymaps/et (100%)
rename {pc-bios => ui}/keymaps/fi (100%)
rename {pc-bios => ui}/keymaps/fo (100%)
rename {pc-bios => ui}/keymaps/fr (100%)
rename {pc-bios => ui}/keymaps/fr-be (100%)
rename {pc-bios => ui}/keymaps/fr-ca (100%)
rename {pc-bios => ui}/keymaps/fr-ch (100%)
rename {pc-bios => ui}/keymaps/hr (100%)
rename {pc-bios => ui}/keymaps/hu (100%)
rename {pc-bios => ui}/keymaps/is (100%)
rename {pc-bios => ui}/keymaps/it (100%)
rename {pc-bios => ui}/keymaps/ja (100%)
rename {pc-bios => ui}/keymaps/lt (100%)
rename {pc-bios => ui}/keymaps/lv (100%)
rename {pc-bios => ui}/keymaps/meson.build (100%)
rename {pc-bios => ui}/keymaps/mk (100%)
rename {pc-bios => ui}/keymaps/nl (100%)
rename {pc-bios => ui}/keymaps/no (100%)
rename {pc-bios => ui}/keymaps/pl (100%)
rename {pc-bios => ui}/keymaps/pt (100%)
rename {pc-bios => ui}/keymaps/pt-br (100%)
rename {pc-bios => ui}/keymaps/ru (100%)
rename {pc-bios => ui}/keymaps/sl (100%)
rename {pc-bios => ui}/keymaps/sv (100%)
rename {pc-bios => ui}/keymaps/th (100%)
rename {pc-bios => ui}/keymaps/tr (100%)