В соответствии с некоторыми предложениями здесь и Lifehacker, я начал использовать autokey.
Он работал отлично в течение недели, но на сегодняшний день он теперь
зависает, когда я пытаюсь ввести имя новые фразы.
обычно не закрывается, когда я нажимаю 'x' в моем окне менеджера
и
Я добавил несколько фраз и перезагрузился со времени моей последней успешной попытки его использования.
Другой пользователь сообщил об аналогичной проблеме для gtk-версии autokey .
Результаты запуска его из командной строки, кажется, показывают некоторые ошибки исключения:
Exception in thread KeypressHandler-thread:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 808, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/dist-packages/autokey/iomediator.py", line 202, in run
target.handle_keypress(rawKey, modifiers, key, windowName, windowClass)
File "/usr/lib/python2.7/dist-packages/autokey/service.py", line 179, in handle_keypress
currentInput, windowInfo, True)
File "/usr/lib/python2.7/dist-packages/autokey/service.py", line 304, in __checkTextMatches
if item.check_input(buffer, windowInfo):
File "/usr/lib/python2.7/dist-packages/autokey/model.py", line 732, in check_input
abbr = self._should_trigger_abbreviation(buffer)
File "/usr/lib/python2.7/dist-packages/autokey/model.py", line 131, in _should_trigger_abbreviation
if self.__checkInput(buffer, abbr):
File "/usr/lib/python2.7/dist-packages/autokey/model.py", line 144, in __checkInput
stringBefore, typedAbbr, stringAfter = self._partition_input(buffer, abbr)
File "/usr/lib/python2.7/dist-packages/autokey/model.py", line 191, in _partition_input
stringBefore, typedAbbr, stringAfter = currentString.rpartition(abbr)
ValueError: empty separator
Любая помощь будет оценена.
Это мое изменение в коде обидчика:
/usr/lib/python2.7/dist-packages/autokey/model.py
def _should_trigger_abbreviation(self, buffer):
"""
Checks whether, based on the settings for the abbreviation and the given input,
the abbreviation should trigger.
@param buffer Input buffer to be checked (as string)
"""
for abbr in self.abbreviations:
if abbr == "":
continue
if self.__checkInput(buffer, abbr):
return True
После игры с автоматическим ключом я заметил, что к одному из моих «Сокращений» добавлена запятая, заключенная в квадратные скобки: [<myabbreviation>,]
При дальнейшей проверке это правило «Фраза» была добавлена вторая, дополнительная пустая аббревиатура, которая при удалении приводила к исчезновению брекетинга.
Поскольку удаление этой лишней пустой аббревиатуры теперь Autokey, похоже, работает отлично.