uinput Keypress steuern

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Dienstag 7. März 2017, 13:23

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
Zuletzt geändert von Anonymous am Dienstag 7. März 2017, 13:28, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

Dienstag 7. März 2017, 13:32

@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.
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Freitag 10. März 2017, 00:32

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
djevil
User
Beiträge: 58
Registriert: Montag 22. August 2016, 14:28

Freitag 10. März 2017, 16:01

Ok,
einfach einen Zähler rein und ein paar Zyklen überspringen..
und es läuft endlich..

Mfg d
Antworten