Autokey 유형의 유니코드 문자를 만드는 방법은 무엇입니까?

Autokey 유형의 유니코드 문자를 만드는 방법은 무엇입니까?

나에게 문제가 있다자동 키: 특수 유니코드 문자를 복사하여 붙여넣을 수 없습니다. 예는 다음과 같습니다.

저는 프랑스인이고 프랑스어로 글을 쓸 때는 세미콜론 앞에 공백을 사용합니다. 하지만 형식적인 타이포그래피에서는 세미콜론 앞에 일반 공백을 사용하지 않고 유니코드 문자 U+202F인 '좁은 줄바꿈 없는 공백'을 사용합니다.

CTRL그래서 프랑스어로 격식을 갖춘 글을 작성할 때 항상 + Shift+ U+ 202F+ ENTER+ ;+ ' 를 입력하는 데 시간을 낭비하는 대신 spaceAutokey 새 문구를 사용하고 싶습니다. 약어 사용 Space+;;(구두로 공백을 입력한 다음 세미콜론을 두 번 입력함을 의미함). 즉 space+;;, (anywhere) 를 입력하면 autokey가 이를  ;(세미콜론이 뒤따르는 좁은 구분 없는 공백)로 변환합니다.

그러나 여기서 문제는 이것이다: Autokey에서 를 사용하여 새 문구를 생성한  ;다음 약어를 사용하면 Autokey는 이를 로만 대체하고 ;구분 없는 좁은 공백을 지웁니다. 그리고 다른 너무 특수한 유니코드 문자에도 이 작업을 수행하는 것으로 보입니다...

이 문제를 해결하는 방법에 대한 아이디어가 있는 사람이 있습니까?

대단히 감사합니다!

답변1

두 가지 옵션: (참조내 블로그옵션 1에 대한 자세한 내용 및 스크린샷을 보려면)

첫 번째 옵션(훨씬 간단함)

다음으로 업그레이드하세요.python 3 autokey 포트(파이썬 3은 파이썬 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

이 방법을 사용하면 유니코드 문자를 구문으로 입력할 수 있습니다.

두 번째 옵션(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 설정을 변경하여 작동합니다. 그런 다음 선택한 문자를 클립보드로 보냅니다( xclip설치했는지 확인). 여기서는 γ를 예로 사용했습니다.) 그런 다음 Ctrl+V를 보내 문자를 붙여넣습니다.

두 번째 옵션에 대한 추가 사항

두 번째 방법은 스크립트의 마지막 줄을 제외한 모든 줄을 파일에 넣어서 개선할 수 있습니다 MyCopy.py. 그런 다음 Autokey의 기본 설정(스크립트 엔진)에서 Autokey에 이 파일이 있는 위치를 알려줍니다. 그러면 스크립트는

from MyCopy import paste_character
paste_character('γ')

일부 응용 프로그램은 붙여넣기에 Ctrl+V를 사용하지 않습니다(예: 터미널에서는 Ctrl+Shift+V를 사용함). 하지만 해당 캐릭터는 여전히 클립보드에 남아 있습니다.

답변2

Python 3.6.8을 실행하는 Linuxmint 19.3에서 작동합니다.

하지만 Linuxmint 20.0에서는 Python 3.6.8 또는 3.8.5로 작동하지 않습니다. 다음 스크립트 오류가 반복적으로 발생합니다.

스크립트 이름 'amacron'

역추적(가장 최근 호출 마지막);

파일 "/usr/lib/python3/dist-packages/autokey/service.py"
485행, exec(script.code, 범위) 실행 중
파일 "", 2행, in
NameError:이름 'reload'가 정의되지 않았습니다.

===

아마크론 스크립트:

수입 시스템
다시 로드(sys)
sys.setdefaultencoding('utf8')

하위 프로세스 가져오기 Popen, PIPE에서
def 붙여넣기_문자(기호):
    c = Popen(['xclip', '-selection', 'clipboard'], stdin=PIPE)
    c.communicate(symbol.encode('utf-8'))
키보드.send_keys('+v')
붙여넣기_문자('ā')

관련 정보