【AutoHotkey】windows和mac统一映射方案

起因

在公司用Mac,在家用Windows,需要 统一快捷键体验

网上搜索之后,发现了一个开源的软件AutoHotkey

简单使用之后,又发现这个东西可以针对不同软件进行特别的按键映射,真的好厉害!
在这里插入图片描述

AutoHotkey官网

建议安装1.1.33.11的版本,而不是当前最新的1.1.34.01版本,原因之后会说。

学习基础语法

建议直接看AutoHotKey 按键映射极简教程,简单扼要的还有这个,初学者向导

AU3_Spy.exe 提供的一个Windows程序ahk_class抓取的工具,后面脚本里程序的ahk_class就是通过这个软件抓取的,打开就知道怎么用了。

获取键盘映射

新建一个名为键盘钩子.ahk的文件,运行以下代码

SC02B::send,{SC02B}
return

在任务栏中双击键盘钩子.ahk,会打开一个页面,选择视图>按键记录和脚本信息(Ctrl+k),然后狂按你需要的那个键,按F5刷新,就能看见他的VK和SC值了

获取应用名称

windwos键+1 会复制当前应用的 ahk_class到剪贴板

#1::WinGetClass, Clipboard, A 
;windwos键+1 会复制当前应用的 ahk_class到剪贴板

然后就可以针对不同的窗口设定快捷键了

君匡魔改方案

禁用单击Alt

对我而言,首先便是禁用单击Alt,免得无意识敲击会导致焦点移动到上下文菜单栏,很是打断思路的。

Alt::Return

至于为什么我要求安装1.1.33.11的版本,原因就是在这里了。

经过在论坛上的讨论,我们发现最近两个版本对这条语句的支持呈现出极大的区别。

  • 1.1.33.11和更早版本是有效果的,所以建议大家安装这个版本
  • 1.1.34.00指定的Alt按键并没有被禁用
  • 1.1.34.01指定的Alt按键和其他的组合键都被禁用了

详细的讨论过程:论坛讨论

快捷键映射

快捷键映射方案如下:

$!c::
	Send {Ctrl Down}{c}{Ctrl Up}
Return
$!x::
	Send {Ctrl Down}{x}{Ctrl Up}
Return
$!v::
	Send {Ctrl Down}{v}{Ctrl Up}
Return
$!a::
	Send {Ctrl Down}{a}{Ctrl Up}
Return
$!s::
	Send {Ctrl Down}{s}{Ctrl Up}
Return
$!w::
	Send {Ctrl Down}{w}{Ctrl Up}
Return
$!z::
	Send {Ctrl Down}{z}{Ctrl Up}
Return
$!f::
	Send {Ctrl Down}{f}{Ctrl Up}
Return
$!q::
	Send {Alt Down}{F4}{Alt Up}
Return

$!Backspace::
	Send {Delete}
Return

$!Left::
	Send {Home}
Return

$!Right::
	Send {End}
Return

$!+Left::
	Send +{Home}
Return

$!+Right::
	Send +{End}
Return

一些特别的映射就没有写出来。

鼠标切换桌面

鼠标切换桌面:

按住鼠标中键之后,用鼠标左右按键切换桌面

~MButton & XButton1::send #^{Right}
return

~MButton & XButton2::send #^{left}
return

~MButton & RButton::send #^{Right}
return

~MButton & LButton::send #^{left}
return

Capslock键切换中英文

把Windows下的CapsLock键调整为和Mac一致,即:

短按:中英文切换

长按:大小写切换

;管理员运行
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%" 
   ExitApp
}

;无环境变量
#NoEnv

;高进程
Process Priority,High

;一直关闭 Capslock
SetCapsLockState, AlwaysOff  
SetStoreCapslockMode, off

Capslock::
	KeyWait, CapsLock
	If (A_TimeSinceThisHotkey > 300)
		SetTimer, mainp, -1
	Else
		Send ^{Space}
Return

mainp:
	Send, {CapsLock}
Return

本质上是映射成为ctrl+空格,所以才可以完成中英文切换。

后来发现用这个方式没有办法将已经敲入的内容打到文本中,由于我是使用的手心输入法,所以我又改成为单按左侧Shfit就可以起效果 了。

If (A_TimeSinceThisHotkey > 700)
		SetTimer, mainp, -1
	Else
		Send {LShift}

针对特别应用

对于记事本

#IfWinActive ahk_exe Notepad.exe
{
!q::
MsgBox, You pressed Alt+q  in Notepad.
Return
}

对于windows资源管理器

#IfWinActive ahk_class CabinetWClass
{
^!q::
MsgBox, You pressed  Ctrl+Alt+q CabinetWClass
Return

![::Send !{Left}
Return

!]::Send !{Right}
Return
}

对于谷歌浏览器

#IfWinActive ahk_exe chrome.exe
{
![::Send !{Left}
Return

!]::Send !{Right}
Return
}

最后一定要加一条单独的语句,结束个别窗口内的映射

#IfWinActive

感谢

感谢现在努力的自己。

  1. AutoHotkey官网
  2. 【AutoHotkey】我的windows和mac快捷键统一解决方案
  3. AutoHotKey 按键映射极简教程
  4. Win下最爱效率神器:AutoHotKey
  5. Windows下Capslock键切换中英文
  6. 高效利用CapsLock键
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值