
У меня проблема сАвтоключ: Я не могу скопировать-вставить через него специальный символ Unicode. Вот пример:
Я француз, и во французском письме вы используете пробел перед точкой с запятой. Но в формальной типографике вы используете не обычный пробел перед точкой с запятой, а «узкий неразрывный пробел», который является символом Unicode U+202F.
Поэтому, когда я пишу формальные вещи на французском языке, вместо того, чтобы всегда тратить время на набор CTRL+ Shift+ U+ 202F
+ ENTER+ ;+ space', я хотел бы использовать новую фразу Autokey. Используя сокращение Space+;;
(что означает, дословно, набор пробела, затем дважды точки с запятой). Это означает, что когда я печатаю (где угодно) space+;;
, Autokey преобразует его в ;
(что является узким неразрывным пробелом, за которым следует точка с запятой).
НО проблема вот в чем: когда я создаю новую фразу в Autokey с ;
, то когда я использую аббревиатуру, Autokey заменяет ее только на ;
, стирая узкий неразрывный пробел. И, похоже, он делает это с любым другим слишком специальным символом Unicode...
Есть ли у кого-нибудь идеи, как обойти эту проблему?
Бесконечно благодарен!
решение1
Два варианта: (См.мой блогдля получения более подробной информации и скриншотов для варианта 1)
Первый вариант(гораздо проще)
Обновление допорт autokey на 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 в виде фраз.
Второй вариант(если у вас не получается заставить работать autokey-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
). Затем в настройках Autokey (Script Engine) укажите Autokey, где находится этот файл. Тогда скрипт станет
from MyCopy import paste_character
paste_character('γ')
Некоторые приложения не используют control+v для вставки (например, терминал использует control+shift+v). Но символ все равно будет в буфере обмена.
решение2
У меня работает в Linuxmint 19.3, где установлен Python 3.6.8.
НО у меня не работает в Linuxmint 20.0, как и в python 3.6.8 или 3.8.5. Постоянно получаю эту ошибку скрипта:
Имя скрипта 'amacron'
Обратная трассировка (последний вызов последний);
Файл "/usr/lib/python3/dist-packages/autokey/service.py" строка 485, в execute exec(script.code, scope) Файл "", строка 2, в Ошибка имени: имя «reload» не определено
===
Скрипт амакрона:
импортировать систему перезагрузка(sys) sys.setdefaultencoding('utf8') из подпроцесса импорта Popen, PIPE def paste_character(символ): c = Popen(['xclip', '-selection', 'clipboard'], stdin=PIPE) c.communate(символ.encode('utf-8')) клавиатура.send_keys('+v') paste_character('а')