[英]Creating keyboard shortcuts with pynput listener
我正在嘗試創建一個腳本,當激活熱鍵時,它會監聽按下的下一個鍵並在字典中查找它以返回一個值。 當我調試時它工作正常,但是當我正常運行時它沒有正確響應,我認為這是由於線程處理,但我不知道如何解決它。
import keyboard
import ast
from pynput import keyboard as kb
keyboard_events={}
path = 'D:\\shortcuts.ini'
file = open(path, 'r')
content = file.read()
keyboard_events = ast.literal_eval(content)
current = set()
def on_activate():
print('Global hotkey activated!')
try:
c = keyboard.read_key()
except:
print()
if c in keyboard_events:
print(keyboard_events[c])
keyboard.write(keyboard_events[c])
def for_canonical(f):
return lambda k: f(l.canonical(k))
hotkey = kb.HotKey(
kb.HotKey.parse('<ctrl>+<shift>'),
on_activate)
with kb.Listener(
on_press=for_canonical(hotkey.press),
on_release=for_canonical(hotkey.release)) as l:
l.join()
已解決,問題不在於線程,而是使用熱鍵,鍵被“按下”。 我分享解決方案'''
import keyboard
import ast
from pynput import keyboard as kb
import time
keyboard_events={}
path = 'shortcuts.ini'
file = open(path, 'r')
content = file.read()
keyboard_events = ast.literal_eval(content)
current = set()
def on_activate():
time.sleep(0.1)
keyboard.press_and_release('ctrl')
keyboard.press_and_release('shift')
time.sleep(0.1)
c = keyboard.read_key()
if c == 'ctrl' or 'mayusculas':
c = keyboard.read_key()
if c in keyboard_events:
keyboard.press('backspace')
keyboard.write(keyboard_events[c])
def for_canonical(f):
return lambda k: f(l.canonical(k))
hotkey = kb.HotKey(
kb.HotKey.parse('<ctrl>+<shift>'),
on_activate)
with kb.Listener(
on_press=for_canonical(hotkey.press),
on_release=for_canonical(hotkey.release)) as l:
l.join()
'''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.