Я пытаюсь создать очень простую программу, которая нажимает клавишу F5 , когда я нажимаю другую клавишу (пример q ).Всякий раз, когда я использую обычные символы az, я сравниваю, используя
if key.char == 'q':
. Это прекрасно работает, пока я не введу Key.f5
(или любой другой Key.
)
if key.char == 'q':
keyboard.press(Key.f5)
keyboard.release(Key.f5)
. Затем я получаю эту ошибку:
if f(*args) is False:
File "C:\Users\lkl\Desktop\combination-1.py", line 17, in on_release
if key.char == 'q':
AttributeError: 'Key' object has no attribute 'char'
Я попытался переименовать key
в key1
и другие имена.Я попытался создать контроллер с именем keyboard1
и другими именами.Я попытался выделить следующий код в своей собственной функции:
keyboard.press(Key.f5)
keyboard.release(Key.f5)
Я попытался отловить ошибку с помощью операторов Try Except.Ошибка все еще приходит.И это заканчивается исполнением.
Я попытался избежать key.char
, просто сравнив ключ с Unicode и HTML-кодом для символа.Это не вызывает никаких действий при нажатии q
if key == 'U+0071':
Дело в том, что программа выполняет команду F5
, даже когда я использую key.char
, но ошибка AttributeError останавливает программу.
Я могу выполнить этот прогон:
if key == Key.shift_l:
keyboard.press(Key.f5)
keyboard.release(Key.f5)
, но мне нужен ключ, чтобы быть простым ключом az, потому что машина получает ключ через кейлоггер на отдельной машине.И он может только отправлять / получать не специальные ключи.например.цифры и буквы.
Это полностью морщит мой мозг.Я не могу найти единственный способ отправить F5
во время прослушивания 'q'
.
Вот полный код:
from pynput.mouse import Listener as ms
from pynput.keyboard import Listener as kb
from pynput.keyboard import Key, Controller
import os
import sys
import subprocess
keyboard = Controller()
def on_press(key):
print('{0} pressed'.format(
key))
def on_release(key):
print('{0} release'.format(
key))
if key.char == 'q':
keyboard.press(Key.f5)
keyboard.release(Key.f5)
if key == "a":
subprocess.call("C:/Users/lkl/Desktop/fastsafelargetest - Copy.vbs", shell=True)
if key == 'z':
subprocess.call("C:/Users/lkl/Desktop/autofill.vbs", shell=True)
if key == Key.esc:
return False
def on_click(x, y, button, pressed):
if pressed:
pass
else:
#subprocess.call("C:/Users/lkl/Desktop/fastsafelargetest - Copy.vbs", shell=True)
print('Released')
def on_scroll(x, y, dx, dy):
print('Scrolled {0}'.format(
(x, y)))
# Collect events until released
with ms(
on_click=on_click,
on_scroll=on_scroll) as listener:
with kb(
on_press=on_press,
on_release=on_release) as listener:
listener.join()