Seite 1 von 1

uinput Keypress steuern

Verfasst: Dienstag 7. März 2017, 13:23
von djevil
Hallo,

ich habe hier diese Funktion:

Code: Alles auswählen

def keys():
    data = dev.read(0x81, 29 , 0)
    
    ## Keys
    knr=data[26]
    
    ### Emit Keypress
    if data[25] == 0:
        device.emit_click(keycode[knr])
leider gibt sie mir meist 2 manchmal auch 3 Buchstaben aus, gibt es eine Möglichkeit dies auf einen zu begrenzen?

Mfg d

Re: uinput Keypress steuern

Verfasst: Dienstag 7. März 2017, 13:32
von BlackJack
@djevil: Ich glaube ja nicht das *die* Funktion das tatsächlich macht, sondern das mehrere Aufrufe der Funktion das machen. Denn ansonsten wäre das Problem ja in ``device.emit_click()`` zu suchen das nur einmal aufgerufen wird und dann mehr als eine Ausgabe machen würden. Ohne mehr Kontext kann man da nur raten. Ich würde raten das ``dev`` ein bisschen zu hardwarenah ist und Du Dich selbst ums entprellen von Tasten kümmern musst.

Re: uinput Keypress steuern

Verfasst: Freitag 10. März 2017, 00:32
von djevil
Hallo,

ja, die Funktion wird in einer Endlosschleife aufgerufen:

Code: Alles auswählen

while 1:
	keys()
	joysticks()
	....
und vermutlich läuft die Schleife während eines Tastendrucks eben 2-3 Mal durch.

Mit einem:

Code: Alles auswählen

time.sleep()
lässt es sich zumindest etwas optimieren,
bremst aber auch die Joysticks(Analog) und ist natürlich auch keine vernünftige Lösung.

Und wie meinst du das die Tasten zu entprellen?

Mfg

d

Re: uinput Keypress steuern

Verfasst: Freitag 10. März 2017, 02:00
von BlackJack

Re: uinput Keypress steuern

Verfasst: Freitag 10. März 2017, 16:01
von djevil
Ok,
einfach einen Zähler rein und ein paar Zyklen überspringen..
und es läuft endlich..

Mfg d