草庐IT

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

lzjShare 2023-03-30 原文

故事一

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

而你,只有两只手
所以,你需要第三只手(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作为删除

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

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  4. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  5. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  6. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  7. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  8. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  9. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  10. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

随机推荐