admin管理员组

文章数量:1571866

需求:为 Windows Terminal 配置快捷键

写完这篇文章后,才发现 windows ternimal 本身支持 Win+` 快捷键😨。

开始之前,先找到对应程序

在开始解决需求之前,得先获取到程序的路径,可以选择实际路径或者为其创建一个快捷方式。

  • 方式一:创建快捷方式:

    1. 通过 win + r 运行 shell:AppsFolder 可以打开应用程序列表,微软商城安装的应用都可在里面找到
    2. 找到需要的程序,在这里我们要找的是 “ternimal” 程序
    3. 将其拖到桌面或其他任意位置即可创建快捷方式。(tips: 拖拽文件时按下 alt 键可以更方便地创建快捷链接)

  • 方式二:获取实际路径

    1. 打开 pwsh (powershell)
    2. 运行 explorer $env:LOCALAPPDATA\Microsoft\WindowsApps 打开目录
    3. 该文件夹中的 wt.exe 就是 window ternimal 启动程序

获取实际路径的另外一种方法:

  1. 先打开 window ternimal
  2. 然后 ctrl + shift + esc 打开任务管理器
  3. 然后在属性栏中右键勾选上“命令行”
  4. 此时找到 window ternimal 进程,展开它,就可以看到其执行路径了

    这种方式获取到的路径不够“灵活”,所以仅做了解即可。

解决方案一:借助 win 自带的配置快捷键

为要配置快捷键的程序创建一个快捷方式,然后打开其属性(alt + 双击),点击快捷方式,就可以看到“快捷键”选项。

这种创建方式非常简单,但也有很多局限 —— 仅支持 “ctrl + alt + 自定义的按键”。如果你习惯 ubuntu 的快捷键(ctrl + alt + t),那么这种方式足矣。但对于我这种资深 OneNote + win 用户,我更希望能够设置 win 快捷键。

解决方案二:借助 AutoHotkey

AutoHotkey 支持通过脚本配置快捷键,这里我仅给出解决方案,不会深入介绍 AutoHotkey

步骤如下:

  1. 下载并安装 AutoHotkey v2.0 版本(推荐以管理员进行安装并且不要修改安装路径)
  2. 在你喜欢的位置上新建一个后缀名为 ahk 的文件,比如 shortcut-wt.ahk
  3. 打开该文件,写入下面内容。然后运行文件即可(将打开方式设置为 AutoHotkey)。
#Requires AutoHotkey v2.0

; ahk 文件中冒号 `;` 表示注释。
; windowTernimalPath := Format("{1}\Terminal.lnk", A_Desktop)
windowTernimalPath := Format("C:\Users\{1}\AppData\Local\Microsoft\WindowsApps\wt.exe", A_UserName)

#T::Run windowTernimalPath

上面代码中提供了两种路径,被注释掉的是“通过快捷方式启动”,未被注释掉的是更加通用的,无需你自行创建快捷方式,只需要你有安装 window ternimal 即可。

文件中的 #T 表示的就是 win + t 快捷键,# 字符代表 win 按键。其他一些常见的按键所对应的字符如下:

  • # 表示 win
  • ! 表示 alt
  • ^ 表示 ctrl
  • + 表示 shift

文件中的 A_DesktopA_UserName 是 ahk 提供的变量,更多变量可参考官方文档

如果你使用 vscode 进行开发,那么你可以安装 thqby.vscode-autohotkey2-lsp 插件,这样可以更方便的运行脚本。运行后状态栏中应该有对应的图标

将脚本设置为开机自启

  1. win + r 运行 shell:startup 可以打开 startup(启动)文件夹
  2. 将刚刚创建的脚本在 startup 文件夹中添加一个快捷方式(或者直接复制整个文件也可以)

记得要将 .ahk 文件的打开方式设置为 AutoHotkey,这样开机时才能正确运行。

(附加)关于额外触发 ctrl 按键问题

如果配置了包含 winalt 的热键,可能会导致额外的模拟按键被触发(默认是 ctrl)。通过“步骤记录器”可以看到效果:

虽然这在日常使用中并不会感知到,但如果你不喜欢,可以在脚本中修改默认触发的虚拟按键:A_MenuMaskKey := "vkE8"

#Requires AutoHotkey v2.0

A_MenuMaskKey      := "vkE8"
windowTernimalPath := Format("C:\Users\{1}\AppData\Local\Microsoft\WindowsApps\wt.exe", A_UserName)

#T::Run windowTernimalPath

现在,额外的模拟按键将会是 vkE8 键码,因为这个键码暂时并未被微软使用。想要了解更多内容,请查阅官方文档对 A_MenuMaskKey 的介绍

本文标签: 快捷键微软开源何为分配