16

I know, I can listen input devices from /dev/input/eventx on Android/Linux. If you are superuser, you can also send events to the device through that.

I would like to send mouse events to my Android device as superuser. However, in order to do this, a mouse must be connected to the device via USB or bluetooth connection. Without it, I get error as Could not open /dev/input/event8, No such device when execute this command on adb sendevent /dev/input/event8 xxxx xxxx xxxxxxxx. In this case, the node was attempted to be created using the mknod /dev/input/event8 c 13 71 command.

The problem is solved when I connect a bluetooth or USB mouse to the device. The device is created automatically under /sys/devices/platform/tegra_uart.2/tty/ttyHS2/hci0 named hci0:11 also create input event /dev/input/event7 (major 13 minor 71). After that I can send events to that node and control Android mouse cursor. But I want to do this without connecting a mouse to the device.

Could anyone suggest how can I create a mouse input device (like when a mouse is connected) on my android device virtually?

asked Aug 15, 2013 at 12:33
7
  • Yes, such as touchscreen but without real hardware device. I mean, virtual mouse device. Commented Aug 15, 2013 at 12:52
  • @ErdemUYSAL See lxr.free-electrons.com/source/Documentation/input/input.txt and also the code under drivers/input/mouse/. Commented Aug 15, 2013 at 23:49
  • @PeterL. Thank you for your advice. But my problem is still not resolved. Because there is gpm command in Linux, but there isn't in Android :S Commented Aug 16, 2013 at 8:08
  • do you find the solution ? I need that too Commented Jan 5, 2014 at 18:57
  • 3
    So are you trying to inject touch events? Have you read this: pocketmagic.net/injecting-events-programatically-on-android Commented Mar 12, 2015 at 19:37

1 Answer 1

14
+100

From what i see you should create your own virtual device with your own driver , Fortunately there is an easy way to do so using uinput

There is an easy guide for getting started here , and this question can be a good guide to write your own virtual driver.

I thought this can only be done if you have access to kernel , and create your own ( i dont think modifying user rom is a good solution ) , but after reading this , it is clear that Uinput can run in user mode.

Note :

I agree with recommendition to use touch events ; as this solution is more common and makes sense , check second suggestion is this answer

answered Mar 17, 2015 at 6:34
Sign up to request clarification or add additional context in comments.

3 Comments

Great answer. I want to add that the device will disappear once the program terminates. I've been able to create an input device and send input events to the /dev/input/event* file.
@LeonvanNoord thanks , glad i could help , but can you please be more clear about device disappear thing ? just to help whoever seek this answer in future.
If the program described in part 1 of the guide finishes running, the device disappears. It's not present anymore in /proc/bus/input/devices and the corresponding /dev/input/event* also disappears.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.