由于已经厌倦了机械键盘,又实在无法抵挡 HHKB 的颜值,入手了一枚 hhkb pro2。

入手之后立刻傻眼,方向键不仅需要按 Fn 键才能触发,那憋屈的键位让我这用方向键与 Ctrl+C 一样多的程序猿情何以堪!好在我是程序猿,天生不怕折腾,在经过设置 DIP 开关、使用 Autohotkey 改键、设置 Win10 系统权限等一系列的折腾之后,终于可以舒服的使用这款 HHKB 写代码了,效率更超之前的机械键盘。

设置 DIP 开关

SW1 on、SW2 off = Lite ext 模式,既 ◇ 键为 Win 键。
SW3 on = Delete 键改为退格键。
SW4 on = 左侧 ◇ 键为 Fn 键。
SW5 off = 不交换 ◇ 与 Alt 键。
SW6 on = 启用唤醒功能。

使用 Autohotkey 改键

首先要解决方向键问题。我并不是 Emacs/Vim 党,想来想去还是把“上下左右”的快捷键设置成 Ctrl + I、K、J、L 比较直观。另外,编代码时跳到行首、行尾的操作也很多,所以可以再加上 Ctrl + H 跳到行首,Ctrl + ' 跳到行尾的快捷键。脚本也很简单:

^j::Send,{Left}
^l::Send,{Right}
^i::Send,{Up}
^k::Send,{Down}
^h::Send,{Home}
^'::Send,{End}

但是,仅仅这样并没有比原来方便,既然进入了双手不离开主键盘区的领域,就要尽可能减少使用鼠标才能提高效率,毕竟现在要实现按方向键已经必须使用两只手了。编代码选中变量名的操作很多,我们已经实现了 Ctrl + I、K、J、L 上下左右移动光标,如果能实现 Ctrl + ◇ + I、K、J、L 上下左右选中文本就非常方便而且直观了!观察一下 HHKB 的键盘,正好 ◇ + I、K、J、L 等价于 PrintScreen、Home、小键盘的除号、PageUp 键,所以就再增加如下脚本代码:

^PrintScreen up::Send,{RShift down}{Up}{RShift up}
^Home up::Send,{RShift down}{Down}{RShift up}
^NumpadDiv up::Send,+{Left}
^PgUp up::Send,{RShift down}{Right}{RShift up}

注意在每个快捷键后面都加上了 “up”。这是因为在测试时发现,如果 Ctrl + ◇ + J 按住的话,也就是希望光标以最快速度往左侧选中文本的时候,每选中5、6个字母,选中的字母就会被一个 “/” 字母替换掉!也就是本来应该连续输出 Shift + Left,却偶尔直接输出了 “/”。而快捷键后面加上 “up” 的意思是不允许按住,只允许一下一下按快捷键。这样虽然不会出错了,但是这一下一下按效率实在太低了。经过反复尝试,我找到一个秘技:先使用 “NumpadDiv::CtrlBreak” 和 “PgUp::CtrlBreak” 把要输出的快捷键改为不会实际输出字符的“CtrlBreak”键,就不怕键冲突了。实际脚本这个样子:

NumpadDiv::CtrlBreak
PgUp::CtrlBreak^NumpadMult up::Send,{RShift down}{Home}{RShift up}
^NumpadDiv::Send,+{Left}
^Home up::Send,{RShift down}{Down}{RShift up}
^PgUp::Send,{RShift down}{Right}{RShift up}
^PrintScreen up::Send,{RShift down}{Up}{RShift up}
^Right up::Send,{RShift down}{End}{RShift up}
^NumpadSub up::Send,{RControl down}{Left}{RControl up}{RControl down}{RShift down}{Right}{RControl up}{RShift up} ;select whole word left to right
^End up::Send,{RControl down}{RShift down}{Left}{RControl up}{RShift up} ;select whole word left
^PgDn up::Send,{RControl down}{RShift down}{Right}{RControl up}{RShift up} ;select whole word right
^NumpadAdd up::Send,{Home}+{End}

上面的脚本还同时实现了 Ctrl + M 选中单词,Ctrl + N 选中行,Ctrl + < 向左按单词扩选,Ctrl + > 向右按单词扩选。最棒的还是可以允许按住 Ctrl + ◇ + J 和 Ctrl + ◇ + L 来快速扩选了,代价是牺牲了小键盘除号和PageUp键,不过可以接受。

另外像把变量首字母由大写改为小写这样的功能,虽然不是很常用,但也能有效提升效率,我把快捷键设置为 Ctrl + 反引号,实现起来稍稍有点复杂但也不难。使用一段时间,做了些优化和微调,最终的Autohotkey脚本:

NumpadDiv::CtrlBreak
PgUp::CtrlBreak^j::Send,{Left}
^l::Send,{Right}
^i::Send,{Up}
^k::Send,{Down}
^h::Send,{Home}
^'::Send,{End}^NumpadMult up::Send,{RShift down}{Home}{RShift up}
^NumpadDiv::Send,+{Left}
^Home up::Send,{RShift down}{Down}{RShift up}
^PgUp::Send,{RShift down}{Right}{RShift up}
^PrintScreen up::Send,{RShift down}{Up}{RShift up}
^Right up::Send,{RShift down}{End}{RShift up}
^NumpadSub up::Send,{RControl down}{Left}{RControl up}{RControl down}{RShift down}{Right}{RControl up}{RShift up} ;select whole word left to right
^End up::Send,{RControl down}{RShift down}{Left}{RControl up}{RShift up} ;select whole word left
^PgDn up::Send,{RControl down}{RShift down}{Right}{RControl up}{RShift up} ;select whole word right
^NumpadAdd up::Send,{Home}+{End}RWin & '::Send,{RWin down}{RControl down}{Right}{RWin up}{RControl up}
RWin & `;::Send,{RWin down}{RControl down}{Left}{RWin up}{RControl up}+Esc::Send,{RAlt down}{Left}{RAlt up}
+Tab::Send,{RAlt down}{Right}{RAlt up}; Ctrl + ` set firt char to lower
^`::clipBak := ClipboardAll ; bak clipboardClipboard := "" ;clear clipboardSend,{RControl down}{Left}{RControl up}{RShift down}{Right}{RShift up}{RControl down}c{RControl up} ;copy first char to clipboardClipWait, 1 ;wait clip complete; convert firt char in clipboard to lowerselText := Clipboard;MsgBox % selTextStringLower, selText, selText; set lower char to clipboard and paste it to replace in placeClipboard := selTextSend, ^vSleep, 100 ;prevent restore clipBak too earlyClipboard := clipBak ; restore clipboardSend, {RControl down}{Right}{RControl up}
return;Ignore these shortkey
^1::return
^2::return
^3::return
^4::return
^5::return
^6::return
^7::return
^8::return
^9::return
^0::return
^-::return
^=::return
^\::return
^Left::return

设置 Win10 权限

到目前为止似乎一切都很完美,但是打开 Visual Studio,突然发现在 VS 里面刚刚设置的所有快捷键全!失!效!!一开始还以为是 VS 把全局快捷键给屏蔽了,想找找能不能通过 VS 里面的设置不屏蔽全局快捷键,结果无功而返,感觉怕是解决不了了。后来还是在靠谱的 Stackoverflow 里面找到了答案。原来是因为 VS 运行于管理员权限,而 Autohotkey 运行于普通用户权限。解决方法就是在 AutoHotkeyU64.exe(如果是64位操作系统的话)右击,选“属性”,在“兼容性”选项卡里,勾选“以管理员身份运行此程序”。

终于解决了 VS 快捷键失效的问题,但是马上又发现以管理员身份运行 Autohotkey 会造成它不能开机自动启动。解决方法是禁用 UAC。禁用 UAC 的方法是:Win+R,输入gpedit.msc,运行打开“本地组策略编辑器”,计算机配置->Windows设置->安全设置->本地策略->安全选项->以管理员批准模式运行所有管理员,改为"已禁用"即可。

[效率] HHKB键盘 + Autohotkey 配置秘籍相关推荐

  1. 弹出键盘布局上移_评测 | 别买了HHKB键盘不知道这些新功能!

    ⇪ 点击"蓝字"关注我们 ⇪  关于HHKB静电容键盘的新品系列,小U已经与大家分享了不少"评测",虽然距离新品发布已经有一段时间,但大家的热情依旧不减呀,每一 ...

  2. android 全键盘手机排行榜,提升打字效率 全键盘Android手机盘点

    Android在经历了短短的三年时间,已经成功超越Symbian平台成为目前全球最畅销的智能手机操作系统.而 目前市面上的Android手机都向着触控大屏方向发展,超大的屏幕显示面积可以带来非常震撼的 ...

  3. linux内核添加usb键盘驱动,配置USB外设 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    linux-2.6.32在mini2440开发板上移植 配置USB外设 [日期:2013-04-08] 来源:Linux社区 作者:ssdsafsdsd [字体:大 中 小] 编者:因为LINUX内核 ...

  4. 我的AutoHotkey配置

    关键配置: #IfWinActive ^L:: {WinGetClass, active_class, AIfInString, active_class, Afx:400000:8:Send !+{ ...

  5. linux路由配置秘籍,最新最全秘籍:如何提升路由器信号强度?

    OFweek智能家居网讯:互联网时代的人们更加缺少耐心,网页的卡顿或者视频的缓冲都会让很多人恨不得砸键盘.即使我们安装了很高的带宽,后期维护不好的话,网速一样会掉速或者掉线,几种简单改进路由器的办法. ...

  6. linux路由配置秘籍,linux常用命令总结

    过去这么些年,断断续续在用rh linux,用的最多的就是装一些应用软件,比如tomcat.mysql.jdk.apache等.因为是断断续续,所以很多命令也是用用忘忘.想起来也挺让人苦恼.现在将一些 ...

  7. 解放右手鼠标,效率实用神器 Autohotkey 利用 Capslock 键匹配 vim 键位| Autohotkey 脚本解决 onenote 上下键问题 | Capslock++

    好多年前就用一个祖传 autohotkey 脚本来在所有地方用上 hjkl 来写字,最近因为 onenote uwp 要寿终正寝了,准备用回 office 的版本,结果想起来之前一直用 UWP 是因为 ...

  8. 设置VSCode打开键盘快捷方式和键盘快捷方式配置JSON分别快捷键为:Ctrl+Alt+K和Shift+Alt+K

  9. AutoHotKey Script AHK脚本++Topre Realforce 104Pro十周年纪念版静电容键盘

    AutoHotKey Script AHK脚本++Topre Realforce 104Pro十周年纪念版静电容键盘 AutoHotKey Script AHK脚本++Topre Realforce ...

  10. happy hacking keybord(hhkb pro)键盘 翻新真假判别(realforce键盘也一样)

    "在此推荐一个最放心的购买键盘方式,大家可以直接去amazon日本购买,我看了下比淘宝上的奸商要便宜400~800rmb(就拿型号 PD-KB400W的hhkb pro2来说要20990日元 ...

最新文章

  1. ServletContext讲解
  2. Please select Android SDK
  3. 23. Leetcode 86. 分隔链表 (链表-基础操作类-分隔链表)
  4. linux deploy 版本,Linux Deploy
  5. 使用 JIRA 4.0 + Greenhopper 4.0 进行项目状态跟踪(转)
  6. 基于Sbo SDK的Add-on插件开发实例
  7. 浏览器多代理配置 - SwitchyOmega
  8. 更改 SQL Server 2000 端口号
  9. Spring Boot 定时任务,怎么实现任务动态增删启停?
  10. 实施和开发哪个前景好_现在学习苹果ios开发还有发展前景吗?学android和ios哪个更好?...
  11. 安装java错误_安装JAVA JDK错误提示正在进行另一JAVA安装解决方法
  12. 8.NLTK之分析句子结构
  13. 【GIS风暴】什么是EPSG?常见坐标系对应的EPSG代号、经度范围、中央经线是多少?
  14. 如何批量将PNG格式转化为JPG格式
  15. english need study and insist 1
  16. 奥布莱恩杯尘埃落定 人工智能立功了!
  17. 虚拟硬盘 服务器 破解,服务器版虚拟硬盘_Primo Ramdisk Server Edition V5.6.1 免费版
  18. Qtxlsx操作Excel之使用
  19. 面试中如何化解懵逼,从一个短网址服务说起
  20. 散点图 计算 java_怎么在excel中计算散点图的公式

热门文章

  1. 5. 工业大数据典型应用
  2. 【2000字原创】大厂都在用的几款软件测试平台!
  3. 数据库防火墙:数据库防火墙的阻断方式
  4. 实习收获之 获取json对象键值的几种方法
  5. C#开源组件之Word文件的操作:一
  6. Excel打开CSV文件,数字起始0丢失问题
  7. 各种内部排序方法及其比较实验报告
  8. java 集成 pageoffice 实现 word 文档的在线编辑以及流转
  9. 不用刷新,用 dfuse 流式搜索提供即时用户体验
  10. 使用OpenResty达到十万级并发超高性能Web应用(一):HelloWorld