Skip to content

Commit

Permalink
drivers/input: enable touch/kbd/mouse for virtio input
Browse files Browse the repository at this point in the history
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
  • Loading branch information
HongChao6 authored and xiaoxiang781216 committed Aug 19, 2024
1 parent 580f738 commit fb37391
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion drivers/virtio/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ config DRIVERS_VIRTIO_GPU

config DRIVERS_VIRTIO_INPUT
bool "Virtio input support"
depends on INPUT && INPUT_TOUCHSCREEN && INPUT_KEYBOARD && INPUT_MOUSE
default n
depends on INPUT

config DRIVERS_VIRTIO_NET
bool "Virtio network support"
Expand Down
23 changes: 18 additions & 5 deletions drivers/virtio/virtio-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,27 +165,40 @@ virtio_input_send_mouse_event(FAR struct virtio_input_priv *priv,
{
priv->mousesample.buttons |= MOUSE_BUTTON_1;
}
else
{
priv->mousesample.buttons &= ~MOUSE_BUTTON_1;
}
break;

case BTN_RIGHT:
if (event->value)
{
priv->mousesample.buttons |= MOUSE_BUTTON_2;
}
else
{
priv->mousesample.buttons &= ~MOUSE_BUTTON_2;
}
break;

case BTN_MIDDLE:
if (event->value)
{
priv->mousesample.buttons |= MOUSE_BUTTON_3;
}
else
{
priv->mousesample.buttons &= ~MOUSE_BUTTON_3;
}
break;
}
}
else if (event->type == EV_SYN && event->code == SYN_REPORT)
{
mouse_event(priv->mouselower.priv, &priv->mousesample);
memset(&priv->mousesample, 0, sizeof(priv->mousesample));
priv->mousesample.x = 0;
priv->mousesample.y = 0;
}
}

Expand Down Expand Up @@ -242,7 +255,7 @@ static void virtio_input_worker(FAR void *arg)
while ((evt = (FAR struct virtio_input_event *)
virtqueue_get_buffer(vq, &len, NULL)) != NULL)
{
vrtinfo("virtio_input_worker (type,code,value) - (%d,%d,%d).\n",
vrtinfo("virtio_input_worker (type,code,value)-(%d,%d,%" PRIu32 ").\n",
evt->type, evt->code, evt->value);

priv->eventhandler(priv, evt);
Expand Down Expand Up @@ -319,7 +332,7 @@ static void virtio_input_register(FAR struct virtio_input_priv *priv)
if (virtio_input_select_cfg(priv, VIRTIO_INPUT_CFG_EV_BITS, EV_ABS))
{
priv->touchlower.maxpoint = 1;
snprintf(priv->name, NAME_MAX, "/dev/virtinput%d",
snprintf(priv->name, NAME_MAX, "/dev/input%d",
g_virtio_touch_idx++);
touch_register(&(priv->touchlower),
priv->name,
Expand All @@ -328,7 +341,7 @@ static void virtio_input_register(FAR struct virtio_input_priv *priv)
}
else if (virtio_input_select_cfg(priv, VIRTIO_INPUT_CFG_EV_BITS, EV_REL))
{
snprintf(priv->name, NAME_MAX, "/dev/virtmouse%d",
snprintf(priv->name, NAME_MAX, "/dev/mouse%d",
g_virtio_mouse_idx++);
mouse_register(&(priv->mouselower),
priv->name,
Expand All @@ -337,7 +350,7 @@ static void virtio_input_register(FAR struct virtio_input_priv *priv)
}
else if (virtio_input_select_cfg(priv, VIRTIO_INPUT_CFG_EV_BITS, EV_KEY))
{
snprintf(priv->name, NAME_MAX, "/dev/virtkbd%d",
snprintf(priv->name, NAME_MAX, "/dev/kbd%d",
g_virtio_keyboard_idx++);
keyboard_register(&(priv->keyboardlower),
priv->name,
Expand Down

0 comments on commit fb37391

Please sign in to comment.