#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 ")
Я читал здесь:
- https://autokey .github.io/lib.scripting-pysrc.html
- https://github.com/autokey/autokey
- и, конечно, в некоторых местах по всему Интернету
Система
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()
? Это может помочь. Если хотите, я могу немного подробнее остановиться на другом ответе. Дайте мне знать.