家里有一台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
注意
如果遇到Windows或者其他的软件的快捷键的覆盖问题,可用参考:“覆盖或禁用外部的热键”