像Mac一样使用Windows快捷键

家里有一台Mac Pro的笔记本(视频播放),一台Windows的组装台式机(Steam),经常需要面对不同的操作系统,需要记不同操作系统下的操作快捷键,这一个非常让人崩溃的事情😫。

为了解决这个问题,我首先想到的是修改Windows的快捷键,经过一番google、尝试,得出的结论是微软的windows不支持修改操作系统的默认快捷键,这条路基本堵死。

AutoHotKey

另外一个思路是,模拟&修改键盘的输入来实现快捷键的变更。通过借助AutoHotKey来映射键盘输入,基本能实现自己想要的功能,包括复制、粘贴,以及idea的常用快捷键,实现了windows适配mac的快捷键(注:Option->WIN,Command->ALT,SHIFT不变)。具体参考脚本如下,更多脚本可用参考附录的autohotkey-windows-mac-keyboard

#Requires AutoHotkey v2.0
#SingleInstance Force 

; Event/Input/InputThenPlay/Play
SendMode "Input"

; SetKeyDelay 0, 50

!a::Send "^{a}" ; 全选
!c::Send "^{c}" ; 复制
!f::Send "^{f}" ; 查找
!s::Send "^{s}" ; 保存
!v::Send "^{v}" ; 粘贴
^+v::Send "<#!{v}" ; 纯文本粘贴
!x::Send "^{x}" ; 剪切
!z::Send "^{z}" ; 回退
+!Left::Send "+{Home}" ; 选择且光标跳到行首
+!Right::Send "+{End}" ; 选择且光标跳到行尾
!Left::Send "{Home}" ; 光标跳到行首
!Right::Send "{End}" ; 光标跳到行尾

; 下面是idea快捷键部分
<#!Left::Send "^!{Left}" ; WIN + ALT + LEFT = CTRL + ALT + LEFT
<#!Right::Send "^!{Right}" ; WIN + ALT + Right = CTRL + ALT + Right
<#!l::Send "^!{l}" ; WIN + ALT + L = CTRL + ALT + L 格式化
<#!o::Send "^!{o}" ; WIN + ALT + O = CTRL + ALT + O 优化import导入
!LButton::Send "!{LButton}" ;  CTRL + 鼠标 优化import导入



/*
!  = ALT
^  = CTRL
+  = SHIFT
#  = WIN
<# = 左WIN
*/
#!h:: ; WIN + ALT + H
{
	MsgBox "
	(
		可用修改这部分的内容,来测试是否编译成功,version:005
	)","AutoHotKey测试"
	return
}

AutoHotKey脚本自启动:

  • 设置AutoHotKey的默认脚本,在AutoHotKey的执行目录D:\Program Files\AutoHotkey\v2创建同名脚本:AutoHotkey.ahk;

  • 设置AutoHotKey程序自启动,将启动AutoHotKey的bat脚本放到windows自启动目录:C:\Users\<UserName>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

@echo off
start AutoHotkey.exe

注意

参考

IntelliJ IDEA快捷键

Comment