当前位置: 首页 >  技术宝典 >  【AutoHotkey】一种适合敲代码&&可以用左手完成大部分功能的组合键设计

【AutoHotkey】一种适合敲代码&&可以用左手完成大部分功能的组合键设计

导读:故事一.使用键盘,需要两只手;.使用鼠标,还需要一只手;.总共三只手。.而你,只有两只手.所以,你需要第三只手(bushi).所以,通常是左手使用键盘,而右手控制鼠标。.但Enter、BackSpace等一些常见按键经常迫使你使用右手去按。.故事二.敲代码时,你经常需要向前/向后

故事一

使用键盘,需要两只手;
使用鼠标,还需要一只手;
总共三只手。

而你,只有两只手
所以,你需要第三只手(bushi)

所以,通常是左手使用键盘,而右手控制鼠标。
但Enter、BackSpace等一些常见按键经常迫使你使用右手去按。

故事二

敲代码时,你经常需要向前/向后移动文本
偶尔还要选定它们
这迫使你使用右手
移动大老远去按上下左右方向键移动文本

那你能怎么办呢?

使用AutoHotkey

脚本说明

原先的大写键,变为了快速按两下才能打开/关闭
相应的,大写+某个按键的组合可以起到不同的效果
如果要输入大写字母,建议更多的使用 Shift+字母 输入

常用的几个按键(这么写只是利于理解,并不完全正确,请细看代码):
大写+F 回车
大写+C Backspace

大写+I Backspace
大写+U/O 向左/向右选择一个词语
大写+H/J/K/L 向左/下/上/右移动(这样是为了和Vim相对应)
大写+P/分号 HOME/END
以上三个,如果带上左Alt,即 大写+左Alt+按键 还可以选定文本

这是我目前使用的ahk脚本

先干正事,上代码

;双击大写Caps Lock(切换大小写)
*capslock::
if Pressescount > 0
{
Pressescount += 1
return
}
Pressescount = 1
SetTimer,caps, 200
return
caps:
SetTimer,caps, off
if Pressescount = 2
{
SetCapslockState,% GetKeyState("Capslock", "T") ? "off" : "on"
}
Pressescount = 0
return

;大写 + 键盘HJKL移动上下左右(加Alt可以选定)
CapsLock & h::
if GetKeyState("LAlt", "P")
SendInput, +{Left}
else
SendInput, {Left}
Return
CapsLock & l::
if GetKeyState("LAlt", "P")
SendInput, +{right}
else
SendInput, {right}
Return
CapsLock & k::
if GetKeyState("LAlt", "P")
SendInput, +{up}
else
SendInput, {up}
Return
CapsLock & j::
if GetKeyState("LAlt", "P")
SendInput, +{down}
else
SendInput, {down}
Return

;大写 + 键盘UO移动单词(加Alt可以选定)
CapsLock & u::
if GetKeyState("LAlt", "P")
SendInput, +^{Left}
else
SendInput, ^{Left}
Return
CapsLock & o::
if GetKeyState("LAlt", "P")
SendInput, +^{Right}
else
SendInput, ^{Right}
Return

;大写+p;回到头尾
CapsLock & p::SendInput, {Home}
CapsLock & `;::SendInput, {End}

;Alt+p;选定头尾
LAlt & p::SendInput,+{Home}
LAlt & `;::SendInput,+{End}

;大写 + 键盘I退格
CapsLock & i::SendInput, {Backspace}

;[对于按键不足的分体键盘的额外按键补充]
;大写 + N(}) / M({) / ,([) / .(])
CapsLock & n::SendInput, {}}
CapsLock & m::SendInput, {{}
CapsLock & ,::SendInput, [
CapsLock & .::SendInput, ]

;[对于按键不足的分体键盘的额外按键补充]
;大写 + /(符号~) / "(符号`)
CapsLock & /::SendInput, ~
CapsLock & '::SendInput, ``


;大写 + WASD控制鼠标移动[+左Alt(键盘上下左右)]
CapsLock & a::
if GetKeyState("LAlt", "P")
SendInput, {left}
else
MouseMove, -21,0,0,R
Return
CapsLock & d::
if GetKeyState("LAlt", "P")
SendInput, {right}
else
MouseMove, 21,0,0,R
Return
CapsLock & s::
if GetKeyState("LAlt", "P")
SendInput, {down}
else
MouseMove, 0,21,0,R
Return
CapsLock & w::
if GetKeyState("LAlt", "P")
SendInput, {up}
else
MouseMove, 0,-21,0,R
Return

;大写 + 鼠标左(e)、右键(q)
CapsLock & e::LButton
CapsLock & q::RButton

;左Alt+ 2关闭当前窗口(alt+F4)
LAlt & 2::SendInput, !{F4}

;大写 + 空格 打开GOOGLE(如果你不能访问,可以把它换成Bing或者别的什么)
CapsLock & space::Run https://www.google.com/

;大写 + f 回车Enter
CapsLock & f::SendInput, {Enter}

;大写 + 标签顺序(g)逆序(r)切换(常用于浏览器标签页,或者是QQ的聊天会话切换)
CapsLock & g::^Tab
CapsLock & r::^+Tab

;大写 + Z(idea中下移代码) / X(idea中上移代码)
;这里的idea是一种JAVA的IDE
CapsLock & z::SendInput, ^+{down}
CapsLock & x::SendInput, ^+{up}

;大写 + C(Backspace)
CapsLock & c::SendInput,{Backspace}

;大写 + B(idea中去before的跳转点) / V(idea中去after的跳转点)
CapsLock & v::SendInput,^!{left}
CapsLock & b::SendInput,^!{right}


;F12(大写+t)和F11(大写+alt+t)(浏览器调试代码时,很常用)
CapsLock & t::
if GetKeyState("LAlt", "P")
SendInput, {F11}
else
SendInput, {F12}
Return

;F1(大写+1)(对特殊键盘使用,如果你不是特殊键盘,可以把注释换成它)
CapsLock & 1::SendInput, {F1}

;快速注释(大写+4)
CapsLock & 4::SendInput, ^/

;快速选择 y(大写+2) / n(大写+3)(YN字母经常使用,但都要用右手去按,移到左手会方便很多)
CapsLock & 2::y
CapsLock & 3::n

这套组合键我调整了也有两三年了,应该不需要太多调整了
注:
如果你不习惯Vim的上下左右
可以使用IKJL作为上下左右,H作为删除

内容
  • 三维模型轻量化在移动应用场景的如何发挥作用
    三维模型轻量化在移动应用场景的如
    2023-12-01
    在移动应用场景中,三维模型的重量对于应用的性能、流畅度和用户体验都有很大的影响。而三维模型轻量化技术可以通过减少模型数据
  • 旋转网格超采样(Rotated Grid Supersampling)
    旋转网格超采样(Rotated
    2023-12-06
    旋转网格超采样(Rotated Grid Supersampling).这是对文章 4-Rook Antialiasin
  • gitlab ci 集成 eslint/prettier/tsc 做代码审查,并使用 eslint 输出作为显示代码质量
    gitlab ci 集成 esl
    2023-12-09
    前言.想自动化一下公司里代码的部分审查,最初想用 reviewdog 的,但是公司的域名基本都在 VPN 中访问的,gi
  • 什么是软件供应链?
    什么是软件供应链?
    2023-12-05
    1 软件供应链定义.需方和供方基于供应关系,开展并完成软件采购、开发、交付、获取、运维和废止等供应活动而形成的网链结构。
  • 在idea/webstorm等terminal运行命令报错:Command rejected by the operating system没有权限【已解决】
    在idea/webstorm等t
    2023-12-10
    在idea/webstorm等编译器terminal窗口运行命令报错:Command rejected by the o
  • 实时光线追踪(3)Ray Casting
    实时光线追踪(3)Ray Cas
    2023-12-01
    目录.硬件光追(Hardware Ray Tracing).加速结构(Acceleration Structure,AS