
我有一個問題自動鍵:我無法透過它複製貼上特殊的 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') 貼上字元('ā')