Чтение чисел с помощью автозапуска происходит медленно

#ubuntu #kde #autokey

#убунту #kde-плазма #автоключ

Вопрос:

я хочу получить номер нажатия с помощью автоключи. Мой скрипт работает, но очень медленно и выглядит не очень хорошо.

Может быть, вы знаете более быстрый способ? Мне нужно удерживать клавишу нажатой несколько секунд, прежде чем она будет распознана.

 import os, time, subprocess 
def popupNotify(text):
    subprocess.Popen(['notify-send', text])  # will be showed right top
pressed_key = 999999999999
for x in range(0, 150):
    retCode1 = keyboard.wait_for_keypress('<np_end>',modifiers=[],timeOut=0.01) # <== works
    retCode2 = keyboard.wait_for_keypress('<np_down>',modifiers=[],timeOut=0.01) # <== works
    retCode3 = keyboard.wait_for_keypress('<np_page_down>',modifiers=[],timeOut=0.01) # <== works
    retCode4 = keyboard.wait_for_keypress('<np_left>',modifiers=[],timeOut=0.001) # <== works
    #retCode5 = keyboard.wait_for_keypress('5',modifiers=[],timeOut=0.001) # <== works
    #retCode5 = keyboard.wait_for_keypress('<code84>',modifiers=[],timeOut=0.001) # <== not works, no error
    if retCode1:
        pressed_key = 1
    if retCode2:
        pressed_key = 2
    if retCode3:
        pressed_key = 3
    if retCode4:
        pressed_key = 4
    if pressed_key != 999999999999:
        break

popupNotify(str(pressed_key))
popupNotify("END END END END ")

 

Я читал здесь:

Система

 AutoKey (Qt) 0.95.10
Python 3.8.5
Operating System: Kubuntu 20xx
KDE Plasma Version
 

Ответ №1:

Если вы хотите получить ввод от пользователя с помощью автозапуска, я думаю, лучшим подходом было бы открыть диалоговое окно:

 import subprocess
a = dialog.input_dialog(title='Enter a value', message='Enter a value', default='')
subprocess.Popen(['notify-send', a.data])  # will be showed right top
 

Комментарии:

1. Ваш ответ работает, но останавливайте каждое чтение с помощью диалогового окна. Не могу сказать, что это действительно быстрее.

2. Прохладный. Вы не думали об использовании xev внутренней клавиши autokey для отслеживания нажатий клавиш вместо использования keyboard.wait_for_keypress() ? Это может помочь. Если хотите, я могу немного подробнее остановиться на другом ответе. Дайте мне знать.