Как заставить Autokey вводить символы Unicode?

Как заставить Autokey вводить символы Unicode?

У меня проблема сАвтоключ: Я не могу скопировать-вставить через него специальный символ 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('а')

Связанный контент