Linux - Завершение скрипта AutoKey с использованием сочетаний клавиш

Итак, я новичок с приложением AutoKey на моем элементарном устройстве iOS, и я просто играю с некоторыми пользовательскими сценариями.

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

Итак, есть ли хороший и простой способ для достижения этой цели.

Простите за некомпетентность. ._.

1 ответ

Решение

В настоящее время такого метода не существует.

Autokey использует простой механизм для одновременного запуска сценариев: каждый сценарий выполняется в отдельном потоке Python. Он использует эту оболочку для запуска сценариев с использованием класса ScriptRunner. Есть несколько методов для уничтожения произвольных запущенных потоков Python, но эти методы ни приятны, ни просты. Вы можете найти ответы для общего случая этого вопроса здесь: " Есть ли способ убить поток в Python?"

Есть одна хорошая возможность, но она не очень проста и требует поддержки ваших скриптов. Вы можете "отправить" сигнал остановки в сценарии, используя глобальное хранилище сценариев. Документацию по API можно найти здесь:

Предположим, это скрипт, который вы хотите прервать:

#Your script
import time
def crunch():
    time.sleep(0.01)
def processor():
    for number in range(100_000_000):
        crunch(number)
processor()

Привязать скрипт остановки к горячей клавише:

store.set_global_value("STOP", True)

И измените ваш сценарий так, чтобы он опрашивал значение переменной STOP и прерывал, если он равен True:

#Your script
import time
def crunch():
    time.sleep(0.01)
def processor():
    for number in range(100_000_000):
        crunch(number)
        # Use the GLOBALS directly. If not set, use False as the default.
        if store.GLOBALS.get("STOP", False):
            # Reset the global variable, otherwise the next script will be aborted immediately.
            store.set_global_value("STOP", False)
            break
processor()

Вы должны добавить такую ​​проверку остановки в каждый горячий или длительный путь кода. Это не поможет, если что-то заблокировало ваш скрипт.

Другие вопросы по тегам