脚本

脚本

我想的是:写作代替@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])最新的两行脚本来代替。

相关内容