Autokey タイプの Unicode 文字を作成するにはどうすればよいでしょうか?

Autokey タイプの Unicode 文字を作成するにはどうすればよいでしょうか?

私は問題を抱えているオートキー: 特殊な Unicode 文字をコピーして貼り付けることはできません。次に例を示します。

私はフランス人ですが、フランス語の文章ではセミコロンの前にスペースを使います。しかし、正式なタイポグラフィでは、セミコロンの前に通常のスペースは使わず、Unicode 文字 U+202F の「狭いノーブレーク スペース」を使います。

したがって、フランス語でフォーマルな文章を書くときに、常にCTRL+ Shift+ U+ 202F+ ENTER+ ;+ space' と入力して時間を無駄にする代わりに、Autokey の新しいフレーズを使用したいと思います。省略形を使用しますSpace+;;(口頭で言うと、スペースを入力してからセミコロンを 2 回入力します)。つまり、(どこでも) と入力するとspace+;;、Autokey によって ;(狭い改行なしのスペースとセミコロン) に変換されます。

しかし、ここで問題となるのは、Autokey で を使用して新しいフレーズを作成し ;、その略語を使用すると、Autokey はそれを のみに置き換え;、狭い改行不可スペースを消去してしまうことです。また、他の特殊な Unicode 文字でも同じことが起こるようです...

この問題を回避する方法を誰か知っていますか?

どうもありがとう!

答え1

2つのオプション: (私のブログオプション1の詳細とスクリーンショットについては

最初のオプション(はるかにシンプル)

アップグレードAutokey の Python 3 ポート(Python 3 は Python 2 よりも Unicode 文字をより適切に処理するため)

私の場合、インストールは次のように機能しました。

# 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文字をフレーズとして入力できます

2番目のオプション(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 を送信して文字を貼り付けます。

2番目のオプションの追加

2番目の方法は、スクリプトの最後の行以外をすべて取り出してファイル(と呼ぶことにします)に入れることで改善できますMyCopy.py。次に、Autokeyの設定(スクリプトエンジン)で、このファイルの場所をAutokeyに伝えます。すると、スクリプトは次のようになります。

from MyCopy import paste_character
paste_character('γ')

一部のアプリケーションでは、貼り付けに control+v を使用しません (例: ターミナルでは control+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, scope) の実行
ファイル「」、2行目、
NameError:名前 'reload' が定義されていません

===

amacron スクリプト:

インポートシステム
リロード(sys)
sys.setdefaultencoding('utf8')

サブプロセスからインポートPopen、PIPE
def paste_character(シンボル):
    c = Popen(['xclip', '-selection', 'clipboard'], stdin=PIPE)
    c.communicate(シンボル.encode('utf-8'))
キーボードのsend_keys('+v')
paste_character('ā')

関連情報