@yossiz אכן זה היה הפתרון המוצלח. תודה לך.
בזכות זה הרווחנו 2 דברים:
א. פיתרון לבאג בקשר למקש 5. כי בספריה זו המקשים הימניים מוגדרים כמקשי פונקציה ולמקש 5 אין פונקציה.
ב. הקלדה כמו בפלאפון פלט של אותיות.
האם אפשר לקצר עוד?
קוד של א':
mmm = { 'Key.insert': '0' , 'Key.delete' : '88' , 'Key.end': '1' , 'Key.home': '7',
'Key.down': '2' , 'Key.page_down': '3' , 'Key.left':'4' ,
'Key.right':'5' , 'Key.up': '8' , 'Key.page_up':'9' ,'<12>': '5', '<97>': '1' ,
'<98>' : '2' , '<99>': '3' , '<100>': '4', '<101>': '5' ,
'<102>' : '6','<103>': '7', '<104>': '8', '<105>': '9', 'num_lock': '0' ,
'<96>': '0' ,"'-'": '0' ,"'*'": '0' ,"'/'": '0' ,"'+'": '0'}
from pynput import keyboard
a = ''
def on_press(key):
try:
akk = str(key)
print(akk)
if key != keyboard.Key.enter:
y = str((mmm[akk]))
global a
a= a + y
if key == keyboard.Key.enter:
return False
#print('alphanumeric key {0} pressed'.format(key.char))
except AttributeError:
print('err')
print('special key {0} pressed'.format(key))
def on_release(key):
a = '0'
#print('{0} released'.format(key))
# Stop listener
#return False
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
# ...or, in a non-blocking fashion:
listener = keyboard.Listener(
on_press=on_press,
on_release=on_release)
listener.start()
print(a)
קוד לב' - הקלדה כמו פלאפון (כשר..)
mmm = { 'Key.insert': '0' , 'Key.delete' : ' ' , 'Key.end': '1' , 'Key.home': '7',
'Key.down': '2' , 'Key.page_down': '3' , 'Key.left':'4' ,
'Key.right':'5' , 'Key.up': '8' , 'Key.page_up':'9' ,'<12>': '5', '<97>': '1' ,
'<98>' : '2' , '<99>': '3' , '<100>': '4', '<101>': '5' ,
'<102>' : '6','<103>': '7', '<104>': '8', '<105>': '9','<110>': ' ', 'num_lock': '0' ,
'<96>': '0' ,"'-'": '-' ,"'*'": '*' ,"'/'": '/' ,"'+'": '+'}
nam = {'1':'א', '11':'ב', '2':'ג', '22':'ד','3':'ה', '33':'ו', '4':'ז', '44':'ח','5':'ט', '55':'י', '6':'כ',
'66':'ל','7':'מ', '77':'נ', '8':'ס', '88':'ע','9':'פ', '99':'צ', '0':'ק', '00':'ר','+':'ש',
'++':'ת', '-':'ך', '--':'ץ','*':'ף', '**':'ם', '.':' '}
from pynput import keyboard
a = ''
b = ''
t = ''
def on_press(key):
try:
akk = str(key)
#print(akk)
if key != keyboard.Key.enter:
y = str((mmm[akk]))
global a
a= a + y
if key == keyboard.Key.enter:
return False
except AttributeError:
print('err')
print('special key {0} pressed'.format(key))
def on_release(key):
a = '0'
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
listener = keyboard.Listener(
on_press=on_press,
on_release=on_release)
listener.start()
#print(a)
e =(a.split())
#print(e)
for i in e:
u = str((nam[i]))
t = t + u
print(t)