You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AutoHotkey迁移至Ubuntu的AutoKey:缺失功能处理及替代工具咨询

我之前从Windows转Ubuntu的时候,也把一堆AHK脚本迁移到AutoKey,对你遇到的这些痛点简直感同身受!下面就一步步给你解决这些问题,顺便推荐几个替代工具:

核心AHK功能的AutoKey/Python替代方案

1. 剪贴板监控(对应AHK的OnClipboardChange

AutoKey确实没有内置的剪贴板变更监听,但用Python的线程+定时检查就能轻松实现,而且完全适配AutoKey的环境:

import time
import threading
from autokey import clipboard

last_clip_content = clipboard.get_clipboard()

def monitor_clipboard():
    global last_clip_content
    while True:
        current_content = clipboard.get_clipboard()
        if current_content != last_clip_content:
            last_clip_content = current_content
            # 这里写剪贴板变化后的处理逻辑
            print(f"剪贴板更新:{current_content[:50]}...")  # 只打印前50个字符避免刷屏
        time.sleep(0.3)  # 调整检查间隔,平衡性能和灵敏度

# 后台启动监听线程,daemon=True保证脚本退出时线程自动结束
threading.Thread(target=monitor_clipboard, daemon=True).start()

2. 字符串处理(StringReplace/RegExReplace

这部分完全不用愁,Python的原生字符串和正则功能比AHK还要强大:

  • 替代StringReplace:直接用Python字符串的replace()方法,默认就是全局替换,和AHK的StringReplace逻辑一致:
    original_str = "Hello World, Hello AutoKey"
    new_str = original_str.replace("Hello", "Hi")
    # 输出:Hi World, Hi AutoKey
    
    如果需要忽略大小写,可以先统一转成小写/大写处理,或者用正则。
  • 替代RegExReplace:用Python的re模块,语法和AHK的正则兼容度很高:
    import re
    original_str = "2024-05-20, 2023-12-31"
    # 把日期格式从YYYY-MM-DD改成MM/DD/YYYY
    new_str = re.sub(r"(\d{4})-(\d{2})-(\d{2})", r"\2/\3/\1", original_str)
    # 输出:05/20/2024, 12/31/2023
    

3. 按键状态检测(GetKeyState

AutoKey没有内置的按键状态检测,但是可以通过第三方库pynput实现。先在AutoKey的Python环境里安装它(打开终端,运行pip install pynput,确保和AutoKey用的Python版本一致),然后写代码:

from pynput.keyboard import Key, Controller

def check_key_state(key):
    return Controller().is_pressed(key)

# 示例:检测左Ctrl键是否按下
if check_key_state(Key.ctrl_l):
    print("左Ctrl键正被按住")

如果需要持续监听按键状态变化,还可以用pynputListener类实现实时回调。

4. 向指定窗口粘贴内容

AutoKey的window模块可以轻松定位窗口并模拟输入,比AHK的窗口操作更灵活:

from autokey import window, keyboard, clipboard

# 用正则匹配窗口标题(比如匹配所有包含"记事本"的窗口)
target_win = window.get_window_with_title(r".*记事本.*")
if target_win:
    target_win.activate()  # 激活窗口
    keyboard.send_keys("<ctrl>+v")  # 模拟Ctrl+V粘贴
    # 或者直接写入文本,不需要依赖剪贴板
    # target_win.type(clipboard.get_clipboard())
替代AutoHotkey的Linux高级脚本工具

如果AutoKey用着不顺手,还有几个值得尝试的工具:

  • Sxhkd:轻量级快捷键守护程序,配合xdotool可以实现窗口控制、模拟输入等,配置是纯文本格式,极简高效。
  • xbindkeys:老牌快捷键绑定工具,支持复杂的按键组合,搭配xclipxdotool能覆盖大部分AHK的自动化场景。
  • Espanso:专注于文本扩展和剪贴板自动化的工具,支持动态替换、正则匹配,跨平台,在文本处理方面比AutoKey更省心。
  • 桌面环境自带快捷键:如果你用KDE或GNOME,直接用系统自带的快捷键设置,配合Shell/Python脚本,能实现很多基础自动化,不需要额外装工具。

内容的提问来源于stack exchange,提问作者suyogricha

火山引擎 最新活动