У меня есть проблема с Автоключом: Я не могу вставка копии через него специальный символ Unicode. Вот пример:
Я француз, и во французской записи, Вы используете пространство перед точкой с запятой. Но в формальной типографии, Вы не используете регулярное пространство перед точкой с запятой, но ‘узким пространством без повреждений’, которое является символом Unicode U+202F.
Таким образом, когда я пишу формальные вещи на французском языке вместо всегда напрасно тратящего время, вводя CTRL+Shift+U +202F
+ENTER +; + пространство', я хотел бы использовать Автоключевую новую фразу. Используя сокращение Space+;;
(что означает, устно, вводя пространство, затем точка с запятой дважды). Что означает, когда я ввожу (где угодно) space+;;
, автоключ преобразовывает его в ;
(который является узким пространством без повреждений, сопровождаемым точкой с запятой).
НО проблема здесь - это: когда я создаю новую фразу в Автоключе с ;
, затем, когда я использую сокращение, Автоключ заменяет его только ;
, стирание узкого пространства без повреждений. И кажется, что это делает это с любым другим также специальным символом Unicode...
У кого-либо есть идея того, как обойти эту проблему?
Миллион благодарностей!
Две опции: (Дополнительную информацию см. в моем блоге и снимках экрана для опции 1),
Первая (намного более простая) опция
Обновите до порта python 3 автоключа (потому что python 3 имеет дело с unicode символами лучше, чем python 2),
Для меня установка работала следующим образом:
# Edit (April 2018). Autokey now uses python 3 by default. So try
pip3 install autokey
# Install the original autokey
sudo apt-get install autokey-gtk
# Update autokey to python 3 using pip3
pip3 install --user autokey-py3
Затем удостоверьтесь, что Вы выполняете python3 версию, которая является, вероятно, в
~/.local/bin/autokey-gtk
С этим методом можно ввести unicode символы как фразы
Вторая опция (если Вы не можете стать автоключевыми-py3 для работы),
Используйте сценарий Python (Файл-> Новый-> Сценарий) вместе с буфером обмена системы
Вставьте следующее в сценарий
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from subprocess import Popen, PIPE
def paste_character(symbol):
c = Popen(['xclip', '-selection', 'clipboard'], stdin=PIPE)
c.communicate(symbol.encode('utf-8'))
keyboard.send_keys('<ctrl>+v')
paste_character('γ')
Это работает путем изменения настроек Python по умолчанию для работы с unicode правильно. Это затем отправляет, выбранный символ к буферу обмена (удостоверьтесь, чтобы Вы имели xclip
установленный). Здесь я использовал γ в качестве примера). Затем это отправляет control+v для вставки символа.
Отдельно оплачиваемые предметы для второй опции
Второй метод может быть улучшен путем взятия всех кроме последней строки сценария, и помещая его в файл (позволяет, называют его MyCopy.py
). Затем в предпочтениях Автоключа (Механизм выполнения сценария) скажите Автоключ, где этот файл. Затем сценарий становится
from MyCopy import paste_character
paste_character('γ')
Некоторые приложения не используют control+v для вставки (например, терминал использует control+shift+v). Но символ все еще будет на буфере обмена.
У меня работает в Linuxmint 19.3, на котором работает Python 3.6.8.
НО у меня не работает ни Linuxmint 20.0, ни python 3.6.8, ни 3.8.5. Повторно получаю эту ошибку скрипта:
Имя сценария 'amacron'
Traceback (последний последний вызов);
File "/usr/lib/python3/dist-packages/autokey/service.py" line 485, in execute exec(script.code, scope) File "", line 2, in NameError:name 'reload' is not defined
===
сценарий amacron:
import sys reload(sys) sys.setdefaultencoding('utf8') from subprocess import Popen, PIPE def paste_character(symbol): c = Popen(['xclip', '-selection', 'clipboard'], stdin=PIPE) c.communicate(symbol.encode('utf-8')) keyboard.send_keys('+v') paste_character('ā')