Hallo,
ich bin nur Gelegenheitsanwender von Python, Schwergewicht Hardware,
mit schwachen Englischkenntnissen und versuche eine laufende Anwendung zu ändern.
Dazu habe ich dieses Testscript geschrieben.
Eine Hardware hat 3 Tasten und diese liefern jeweils Charakter an USB.
Diese Charakter soll ich nun ändern in space, backspace und return.
Vorher waren es 2: " ", und "q", die leicht darstellbar sind.
Die notwendigen Zeichen sind nicht veränderbar.
Das Ergebnis meines Testscripts ist nur ein Teilerfolg.
Die Tasten space und return funktionieren, die Taste backspace verhält sich anders.
Ich habe schon eine Reihe von Buchbeispielen getestet, aber alle scheitern an \b
Über eine Hilfe wäre ich sehr dankbar.
Vielen dankbar
Alfred
p.s.
die Funktion getch() habe ich geschenkt bekommen, damit kein falscher Eindruck entsteht.
#####################################################
#!/usr/bin/env python
#python /home/alfred/Projekte/DiaShow/InfoSchirm-SW/Menu/Py/TastaturEinzelzeichen/ez.py
import sys
import tty
import termios
import regex as re
# Einzelzeichen abholen ohne return
def getch():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
try:
tty.setraw(fd)
return sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
#Ergebnisse aus xev
#leerzeuchen: keycode 65 (keysym 0x20, space)
# return : keycode 36 (keysym 0xff0d, Return)
#backspace : keycode 22 (keysym 0xff08, BackSpace)
# Zeichenkontrolle
def Zeichen(zchar):
#print ("bin da")
ZC = ""
#if zchar == " " : #ok
if zchar == space : #ok
ZC = "space"
#elif zchar == "r": #ok
# ZC = "r"
#elif zchar == 0xff0d :
elif zchar == ret : #ok
#elif zchar == "\r" : #ok
ZC = "return"
#elif zchar == "\b" : #mist ????
elif zchar == "bs" : #mist ????
ZC = "backspace"
else:
ZC = "mist"
return(ZC)
#Tastendefinitionen
space = "\u0020"
ret = "\u000d"
bs = "\u0008" #mist
#bs = " \u0008" #mist
#bs = " \u0008 " #mist
#bs = '\u0008' #mist
#bs = ' \u0008' #mist
#bs = "r' \b '" #mist
#bs = "\N{BackSpace}" #mist
#Hauptteil
m = 1
status = 0
while m < 2 :
status = getch() #Funktion getch() liefert den Tastenwert in status
ZC = Zeichen(status)
print (m,"-",ZC,"-",status,"-")
m=m+1
#######################################################
\b ist anders
- __blackjack__
- User
- Beiträge: 14078
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@alpich: Lass Dir doch einfach mal mit `print()` und `repr()` ausgeben was die Funktion liefert statt da endlos zu raten.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari