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,粘贴以下经过优化的代码:
autohotkey 复制代码
; =================================================================
; 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. 将以下配置代码添加到数组中:
json 复制代码
{
    "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 配置)。
复制代码
相关推荐
童槿顏丶1 小时前
GitLab部署到Linux
linux·运维·gitlab
小柒儿3363 小时前
从单Agent到多智能体系统:多智能体协作重塑自动化边界
运维·自动化
空堂与归4 小时前
Linux 命令实战:AI 开发者必备的终端操作手册
linux
QYR-分析5 小时前
注塑机机械手自动化装备行业发展研判:存量升级催生增量红利,2032 年市场规模逼近 9 亿美元
运维·自动化
牢姐与蒯5 小时前
Linux基本指令及知识点(二)
linux·运维·服务器
小玮看世界6 小时前
[Python]从“脏”数据到优雅实现:一个IoT滑动窗口最大值问题的测试驱动优化实录
linux·前端·python
ᥬ 小月亮6 小时前
SonarQube使用教程(Docker安装)
运维·docker·容器
在世修行6 小时前
Windows 上 Docker Desktop 部署 MySQL + TDengine 全过程(含 WSL 报错与镜像加速排障实战)
windows·mysql·docker·tdengine
去伪存真20256 小时前
数字样机、态势推演与3D汇报场景下的平台选型对比
运维·服务器
自动化测试行业观察6 小时前
从“自动化”到“智能化”:TestMan AI测试平台引领软件测试范式转移
运维·自动化测试·人工智能·测试工具·自动化·app测试·移动应用测试