GithubHelp home page GithubHelp logo

Comments (14)

viczar avatar viczar commented on August 16, 2024 5

I had this problem in Arch, had this exact problem with the keyboard example and solved it by adding a time.sleep(1) before sending the inputs

from python-uinput.

hajungong007 avatar hajungong007 commented on August 16, 2024 3

hi
I do this
sudo addgroup uinput
sudo adduser $USER uinput
and restart the machine

from python-uinput.

roipoussiere avatar roipoussiere commented on August 16, 2024 1

I had a similar problem on Arch, solved it by enabling uinput with modprobe:

sudo modprobe uinput
sudo python keyboard.py

from python-uinput.

tuomasjjrasanen avatar tuomasjjrasanen commented on August 16, 2024

The error OSError: [Errno 13] Failed to open the uinput device: Permission denied is expected, because by default, /dev/uinput is normally readable/writable only by root. So in order to use uinput, you either have to be root, or you have to change the group and/or permissions of /dev/uinput.

But the case where you run the example with sudo with no visible effects is more interesting. There's couple of ways to debug the issue:

  1. Switch to any virtual terminal (Ctrl + Alt + F3 for example) and login. Run sudo python keyboard.py there. Does anything get printed?

  2. Install evtest package. Edit keyboard.py and increase the sleep time to say 15secs or more. Run sudo python keyboard.py and then in another terminal run sudo evtest. It should list python-uinput as one of the devices (probably the last in the list). Select it and wait until the sleep expires in keyboard.py. evtest should print something like this:

    Event: time 1443032198.289810, type 1 (EV_KEY), code 35 (KEY_H), value 1
    Event: time 1443032198.289810, type 1 (EV_KEY), code 35 (KEY_H), value 0
    Event: time 1443032198.289810, -------------- EV_SYN ------------
    Event: time 1443032198.289889, type 1 (EV_KEY), code 18 (KEY_E), value 1
    Event: time 1443032198.289889, type 1 (EV_KEY), code 18 (KEY_E), value 0
    Event: time 1443032198.289889, -------------- EV_SYN ------------
    Event: time 1443032198.289931, type 1 (EV_KEY), code 38 (KEY_L), value 1
    Event: time 1443032198.289931, type 1 (EV_KEY), code 38 (KEY_L), value 0
    Event: time 1443032198.289931, -------------- EV_SYN ------------
    Event: time 1443032198.289960, type 1 (EV_KEY), code 38 (KEY_L), value 1
    Event: time 1443032198.289960, type 1 (EV_KEY), code 38 (KEY_L), value 0
    Event: time 1443032198.289960, -------------- EV_SYN ------------
    Event: time 1443032198.289983, type 1 (EV_KEY), code 24 (KEY_O), value 1
    Event: time 1443032198.289983, type 1 (EV_KEY), code 24 (KEY_O), value 0
    Event: time 1443032198.289983, -------------- EV_SYN ------------
    Event: time 1443032198.290018, -------------- EV_SYN ------------

from python-uinput.

LuisDiazUgena avatar LuisDiazUgena commented on August 16, 2024

Hi!!

Thanks for your help.

With the first way, I still got nothing. I've runned with sudo and root user, but still nothing shows.

Using the second way, still nothing. There is no python-uinput in the list.

from python-uinput.

Guha01Gubin avatar Guha01Gubin commented on August 16, 2024

I have the exact same problem, except my program is in c. I am developing a virtual keyboard program in Ubuntu 14.04, and the device just cannot get built simply because I do not have root privileges for uinput.

from python-uinput.

tuomasjjrasanen avatar tuomasjjrasanen commented on August 16, 2024

@Guha01Gubin Like I explained earlier, /dev/uinput is readable and writable only by root by default. You should either run it as root, or modify /dev/uinput mode bits and/or owner/group.

from python-uinput.

MEnthoven avatar MEnthoven commented on August 16, 2024

Hi, I have the same problem as @LuisDiazUgena.

For me it shows:

Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "python-uinput"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 18 (KEY_E)
Event code 24 (KEY_O)
Event code 35 (KEY_H)
Event code 38 (KEY_L)
Properties:
Testing ... (interrupt to exit)
Event: time 1470245126.875007, type 1 (EV_KEY), code 35 (KEY_H), value 1
Event: time 1470245126.875007, type 1 (EV_KEY), code 35 (KEY_H), value 0
Event: time 1470245126.875007, -------------- EV_SYN ------------
Event: time 1470245126.875077, type 1 (EV_KEY), code 18 (KEY_E), value 1
Event: time 1470245126.875077, type 1 (EV_KEY), code 18 (KEY_E), value 0
Event: time 1470245126.875077, -------------- EV_SYN ------------
Event: time 1470245126.875128, type 1 (EV_KEY), code 38 (KEY_L), value 1
Event: time 1470245126.875128, type 1 (EV_KEY), code 38 (KEY_L), value 0
Event: time 1470245126.875128, -------------- EV_SYN ------------
Event: time 1470245126.875177, type 1 (EV_KEY), code 38 (KEY_L), value 1
Event: time 1470245126.875177, type 1 (EV_KEY), code 38 (KEY_L), value 0
Event: time 1470245126.875177, -------------- EV_SYN ------------
Event: time 1470245126.875223, type 1 (EV_KEY), code 24 (KEY_O), value 1
Event: time 1470245126.875223, type 1 (EV_KEY), code 24 (KEY_O), value 0
Event: time 1470245126.875223, -------------- EV_SYN ------------
expected 16 bytes, got -1

evtest: error reading: No such device

What can i do to fix this?

If its of any interest, I have used VNC and SSH and OS is Raspian Jessie

from python-uinput.

HiggsWRX avatar HiggsWRX commented on August 16, 2024

@vagol942 thank you! I am under arch and I was having the same problem. Your suggestion fixed it.

from python-uinput.

viczar avatar viczar commented on August 16, 2024

@HiggsWRX I'm glad. This is interesting, I thought it might be something related to my machine, but it seems the Device creation involves a non blocking process; thus the program continues before the input file has fully initialized.

from python-uinput.

marcosps avatar marcosps commented on August 16, 2024

It worked in my machine (Fedora 25), but I first needed to load uinput module, so udev can successfully found uinput module in misc class(aka /sys/class/misc/uinput).

from python-uinput.

multimeric avatar multimeric commented on August 16, 2024

I had this problem in Arch, had this exact problem with the keyboard example and solved it by adding a time.sleep(1) before sending the inputs

This also worked for me, and I'm on a vanilla Ubuntu setup. It seems like we need a way to wait for the device to be created. Does this need to be fixed upstream in https://github.com/tuomasjjrasanen/libsuinput?

from python-uinput.

robin-a-meade avatar robin-a-meade commented on August 16, 2024

Expanding on @hajungong007 's solution to the "Permission denied" error, here's my complete solution for Fedora 30:

Create a group designated for users that can read/write to /dev/uinput. The particular name doesn't matter.

sudo groupadd uinput

Add users to ths new group. Start with yourself:

sudo usermod -a G uinput "$USER"

Permissions before:

$ ls -ld /dev/uinput
crw-------. 1 root root 10, 223 Oct  5 17:52 /dev/uinput

Change group ownership and permissions on /dev/uinput:

sudo chmod g+rw /dev/uinput
sudo chgrp uinput /dev/uinput

Permissions after:

$ ls -ld /dev/uinput
crw-rw----. 1 root uinput 10, 223 Oct  5 17:56 /dev/uinput

from python-uinput.

sa1d avatar sa1d commented on August 16, 2024

I would like to mention about two things.
Firstly, the part in @robin-a-meade 's comment

Add users to ths new group. Start with yourself:

sudo usermod -a G uinput "$USER"

should be (there is a dash missing)

sudo usermod -a -G uinput "$USER"

After that everything works, considering time.sleep(1) is inserted -per other comments- after the uinput.Device creation, i guess it needs some time for initialization.

The second thing is, after a reboot, permissions and group ownership on /dev/uinput resets. You may have to run chmod and chgrp commands at startup with a cronjob hoping /dev/uinput is already created by the kernel driver by the time cronjob runs.
With the recommendations above combined, the old example is still working without any problem.

from python-uinput.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.