V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xzpjerry731
V2EX  ›  问与答

试问: windows 下如何优雅地定义全局快捷键

  •  
  •   xzpjerry731 · 2017-09-24 12:52:15 +08:00 · 4920 次点击
    这是一个创建于 2624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要:实现像 keyboard Maestro 那种感觉,设定出来就是全局的快捷键,拥有最高优先级。

    刚刚试了下 autohotkey,感觉比较接近了,但这厮直接弄出了一门编程语言,感觉学习成本有点高,然后是似乎不能实现全局的样子。(我先让 win 和 ctrl 对换,然后 win + space = Cortan, 然而对换后复制不了东西,估计和某个快捷键冲突了)

    搞不懂为什么 windows 不把这个设置添加到控制面板里面 T_T

    11 条回复    2017-09-25 21:36:10 +08:00
    geelaw
        1
    geelaw  
       2017-09-24 13:24:08 +08:00 via iPhone
    https://msdn.microsoft.com/en-us/library/windows/desktop/ms646309(v=vs.85).aspx

    用 RegisterHotKey 函数,注意你仍然不能注册一些快捷键,例如 Ctrl+Alt+Delete。此外,不应注册带有 Windows 键的快捷键——它们是系统保留的。
    myang
        2
    myang  
       2017-09-24 13:28:28 +08:00
    ahk 是最优雅的方式。学习成本高主要是指实现复杂功能,如果只定义快捷键几乎没有什么学习成本,而且肯定好用。话说我的一行 CapsLock::Ctrl 复制粘贴用了无数年没遇到过冲突……
    LU35
        3
    LU35  
       2017-09-24 13:32:32 +08:00 via Android
    我也是用的 AHK 来实现的,看 5 分钟教程就能写出来。
    ethanlu
        4
    ethanlu  
       2017-09-24 13:35:27 +08:00 via Android
    @myang capslock 代替 ctrl 键么?
    MinonHeart
        5
    MinonHeart  
       2017-09-24 16:41:30 +08:00 via iPad
    有键盘支持重定义按键、宏定义和应用程序场景切换快捷键,觉得很好用
    myang
        6
    myang  
       2017-09-24 17:05:48 +08:00
    @ethanlu capslock 这么舒服的位置,不用来代替 ctrl 没天理啊。capslock 可以随便放到别的不用的键上,比如 scroollock,我是用左右 shift 一起按代替,不过一年也按不到一次:
    <+RShift::CapsLock
    >+LShift::CapsLock
    ethanlu
        7
    ethanlu  
       2017-09-24 19:10:42 +08:00 via Android
    @myang 好像有点道理,ctrl 有时候按的小拇指和手掌连接处都疼
    AEANWspPmj3FUhDc
        8
    AEANWspPmj3FUhDc  
       2017-09-24 19:54:16 +08:00
    xzpjerry731
        9
    xzpjerry731  
    OP
       2017-09-25 03:45:48 +08:00
    @geelaw #1 谢了, 若走投无路就只好自己做个

    @myang #2 我只是想把 windows 常用的快捷键和 mac 同步下位置。。。我目前就是用最初级的那个映射方法,先用 sharpkeys 调换下左 ctrl 和左 win 的位置,然后<^Space::#s, 但是奇怪的是按出来的是 ctrl + s, 换成>#s 也是这样

    @ivlioioilvi #8 谢了,不过这个不能定义组合键。。。
    myang
        10
    myang  
       2017-09-25 12:46:50 +08:00
    @xzpjerry731 ahk 定义的时候,冒号前面表示要按的键盘上的键位,所以你写的不对。另外用 sharpkey 是为什么呢?没用过所以不清楚,至少你的需求一个 ahk 就够了呀:

    LWin::LCtrl
    LCtrl::LWin
    <#Space::#s
    xzpjerry731
        11
    xzpjerry731  
    OP
       2017-09-25 21:36:10 +08:00
    @myang #10 谢谢回复,知道呀; 我刚开始和你写多一样的,但遇到了一个问题(记不太清了,好像是 lctrl 换不到 lwin 上,但是 lwin 是到了 lctrl 上到,晚上回来再折腾下。。。)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.