如何讓Autokey輸入Unicode字元?

如何讓Autokey輸入Unicode字元?

我有一個問題自動鍵:我無法透過它複製貼上特殊的 Unicode 字元。這是一個例子:

我是法國人,在法文寫作中,分號前要使用空格。但在正式的排版中,分號前不使用常規空格,而是使用“窄不間斷空格”,即 Unicode 字元 U+202F。

因此,當我用法語寫正式內容時,我不想總是浪費時間輸入CTRL+ Shift+ U+ 202F+ ENTER+ ;+ space',而是使用 Autokey 新短語。使用縮寫Space+;;(這意味著,口頭上,鍵入空格,然後鍵入分號兩次)。這表示當我輸入 (anywhere) 時space+;;,自動鍵會將其轉換為 ;(這是一個狹窄的不間斷空格,後面跟著一個分號)。

但這裡的問題是這樣的:當我在 Autokey 中創建一個新短語時 ;,然後當我使用縮寫時,Autokey 僅將其替換為;,從而擦除狹窄的不間斷空間。看起來它可以用任何其他太特殊的 Unicode 字元來實現這一點...

有誰知道如何解決這個問題?

太感謝了!

答案1

兩個選項:(參見我的部落格有關選項 1 的更多詳細資訊和螢幕截圖)

第一個選項(更簡單)

升級到python 3 的 autokey 端口(因為 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 字元作為短語

第二個選項(如果你無法讓 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 的首選項(腳本引擎)中,告訴 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:名稱「重新載入」未定義

===

阿馬克宏腳本:

導入系統
重新加載(系統)
sys.setdefaultencoding('utf8')

從子進程導入 Popen, PIPE
def 貼上字元(符號):
    c = Popen(['xclip', '-selection', '剪貼簿'], stdin=PIPE)
    c.communicate(symbol.encode('utf-8'))
鍵盤.send_keys('+v')
貼上字元('ā')

相關內容