我想的是:写作代替@m
写作[email protected]
。
问题:自动键无法正常工作(您输入@m
,它会添加[email protected]
然后删除两个字符,导致:)。这是一个众所周知的@[email protected]
问题自动键。
如果没有 autoKey 的话该如何做?
答案1
我最终构建了一个 python 脚本来实现它。(在带有 gnome 的 ubuntu 20.04 上的 python 3.8 上进行了测试)。
脚本
import pyautogui
import pyperclip
import tkinter as tk
import sys
import time
# Abbrevations (you can add any abbreviation you want)
abbreviations = {
"@m": "[email protected]"
}
# Global var containing the abbreviation key
input = ""
# Binding functions
def onKeyPress(event):
global input
input = input + event.char
if input in abbreviations:
root.destroy()
def close(event):
root.destroy()
exit(0)
# Create a very small tkinter window
root = tk.Tk()
root.geometry('0x0') # key binding doesn't work with root.withdraw(), instead I used a 0*0 window
root.bind('<KeyPress>', onKeyPress) # catch keys and add them to input string
root.bind('<Escape>', close) # close tkinter on escape and end this script
root.mainloop()
# Check if the program ends with an existing abbreviation key
if not input in abbreviations:
exit(0)
time.sleep(0.25) # Give time to re-trigger the current window
# Paste the given string in the current window
pyperclip.copy(abbreviations[input])
pyautogui.hotkey("ctrl", "v")
要求
您需要pyautogui
使用 pip 和 tkinter安装sudo apt-get install python-tks
。
让使用变得简单
使此脚本可执行:chmod +x myscript.py
。然后,您可以添加一个 gnome 键盘快捷键(假设alt+m
)来执行您的脚本(/path/to/myscript.py
)。
用法
现在,您可以按alt+m
运行脚本。如果您输入了错误的命令或改变了主意,请按 Esc。否则,您可以按@m
,脚本将添加[email protected]
到您的剪贴板并将其粘贴到您当前的窗口中。
笔记
@
此示例使用难以用 pyautogui 打印的字符。这就是我使用的原因pyperclip
(请参阅这里和那里)。对于非常简单的用例,您可以使用pyautogui.typewrite(abbrevations[input])
最新的两行脚本来代替。