Windows 实现 Linux 风格“选中即复制,中键即粘贴”操作指南

Windows 实现 Linux 风格“选中即复制,中键即粘贴”操作指南

本指南总结了通过 AutoHotkey (AHK) 在 Windows 环境下完美模拟 Linux (X11) 鼠标行为的方案。此方案已解决权限隔离、浏览器兼容性及误触发等常见问题。


1. 环境准备与权限配置

为了确保脚本能穿透浏览器(Chrome/Edge)及高权限软件(编辑器、终端),必须配置 UI Access

  1. 安装 AHK:前往 AutoHotkey 官网 下载并安装 v2.0+ 版本。
  2. 配置权限
    • 打开 AutoHotkey Dash(系统搜索即可找到)。
    • 点击 Launch settings
    • 确保右侧的 UI Access 选项已全部勾选。
    • 保持 “Auto-detect version when launching script” 选中状态。

2. 创建“强力版”脚本

传统的“光标检测”法在很多现代软件中会失效。我们改用物理位移检测法:只要鼠标左键按下并移动超过一定距离,松开时即触发复制。

  1. 在文件夹中右键 -> 新建 -> AutoHotkey Script,命名为 LinuxMouse.ahk
  2. 右键点击该文件,选择 Edit Script,粘贴以下经过优化的代码:
; =================================================================
; Windows Linux-Style Mouse Behavior (AHK v2)
; 功能:左键划选文字自动复制,鼠标中键直接粘贴
; =================================================================

; --- 划选即复制 (基于位移判断,兼容性最强) ---
~LButton::
{
    ; 记录按下左键时的初始坐标
    MouseGetPos(&x1, &y1)
    
    ; 等待左键松开
    KeyWait("LButton")
    
    ; 记录松开时的坐标
    MouseGetPos(&x2, &y2)
    
    ; 计算移动的欧几里得距离
    distance := Sqrt((x1-x2)**2 + (y1-y2)**2)
    
    ; 只有当移动距离大于 5 像素时,才判断为“划选”动作并触发复制
    ; 这样可以避免单纯的“单击”导致剪贴板被误覆盖
    if (distance > 5)
    {
        Sleep(50) ; 给系统 UI 留出选区渲染的时间
        Send("^c")
    }
}

; --- 中键即粘贴 ---
~MButton::
{
    ; 直接模拟 Ctrl+V
    Send("^v")
}

; 提示:如果需要在某些软件中禁用此功能,可以使用 #HotIf 指令

3. 运行与部署

启动脚本

  • 推荐方式:右键点击脚本文件,选择 “Run with UI Access”
  • 如果菜单中没有该项,请选择 “以管理员身份运行”

开机自启

如果你希望每次进入系统自动拥有此功能:

  1. 按下 Win + R,输入 shell:startup
  2. LinuxMouse.ahk 文件的快捷方式放入该文件夹。

4. 常见问题排除 (Troubleshooting)

现象原因对策
记事本有效,浏览器无效权限不足或光标反馈异常确保以 UI Access 或管理员权限运行;使用上述“位移判断”版代码。
单击按钮时也触发复制位移阈值太小将代码中的 distance > 5 改为 10 或更高。
中键无法关闭浏览器标签按键映射冲突在代码中为 ~MButton 增加条件判断(如 if !WinActive("ahk_exe chrome.exe"))。

💡 贴士:对于像您这样经常处理 ROS 2 仿真或学术论文(LaTeX)的用户,建议在 Windows Terminal 的设置中额外开启 "copyOnSelect": true,以获得终端环境下的原生双重保障。

Windows Terminal 完美实现 Linux 风格“中键粘贴”配置指南

本指南旨在通过修改 Windows Terminal 的原生配置,实现在 WSL 或 CMD 环境下“选中即复制”以及“鼠标中键粘贴”的功能,无需依赖第三方脚本,稳定性更高。


1. 开启“选中即复制” (Copy on Select)

开启此功能后,只要你在终端内划选任何文字,它会自动进入 Windows 剪贴板。

  1. 打开 Windows Terminal
  2. 点击顶部标签栏的下拉箭头,选择 设置 (Settings)
  3. 在左侧导航栏点击 交互 (Interaction)
  4. 找到 “选中即复制” (Copy on selection),将其开关设为 开启
  5. 点击右下角 保存 (Save)

2. 配置“鼠标中键粘贴” (Middle Click Paste)

由于 Windows Terminal 的图形设置界面有时无法直接捕获鼠标中键点击,建议通过 JSON 配置文件进行精准映射。

操作步骤:

  1. 在 Windows Terminal 中按下 Ctrl + Shift + , (逗号) 打开 settings.json
  2. 在文件中找到 "keybindings""actions" 数组(通常在文件末尾附近)。
  3. 务必关闭已打开的图形设置标签页,防止保存冲突。
  4. 将以下配置代码添加到数组中:
{
    "keybindings": [
        {
            "command": "paste",
            "keys": "mbutton"
        },
        // ... 其他现有的快捷键配置
    ]
}

注意事项:

  • 语法检查:确保每个 {} 之间有逗号分隔,且数组最后一项后面不要有逗号。
  • 保存生效:保存 JSON 文件后,无需重启终端即可立即生效。

3. 进阶:管理员权限与启动建议

对于 ROS 2 开发者或 Autoware 研究者,有时需要处理底层驱动或网络配置。

  1. 不建议默认管理员启动:为了系统安全及 Python/LaTeX 路径的一致性,建议平时以普通权限运行。
  2. 按需提权
    • 如果某个标签页需要管理员权限,可以在 设置 -> 默认值 -> 高级 中勾选 “以管理员身份运行此配置文件”
    • 或者在启动终端时,右键点击图标选择“以管理员身份运行”。

4. 环境排查提示

如果配置后中键粘贴依然无效,请检查:

  • 驱动干扰:检查罗技 G Hub 或雷蛇 Synapse 等鼠标驱动软件是否将中键全局映射为了其他宏。
  • 脚本冲突:确保之前运行的 AutoHotkey 脚本没有抢占 ~MButton 信号。
  • 应用类型:确认你打开的是 Windows Terminal 而非旧版的 cmd.exe(旧版控制台不支持此 JSON 配置)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值