键盘布局的改进之道


原文地址:http://www.cppblog.com/huaxiazhihuo/archive/2013/06/29/201380.html


好久没上博客了,自己的那么一点微末道行也不敢拿出来丢人现眼。实际上,过去的几年,真的是让C++和MFC害惨了,一直自个儿固步自封,说什么没有透彻掌握它们,绝不碰其他的玩意,结果就悲剧了,眼界相当重要,再怎么夸张都不为过。显然,MFC是垃圾,但实际上,C++也不是什么好菜,嗯,不吐槽了。还是做点更具实际意义的事情吧,今天的主角是键盘布局。
      由于历史的原因,当今流行的26字母的qwerty键盘布局并不是很科学,甚至有种说法,随便弄一个布局,都要比qwerty好,只因qwerty当初的设计意图就是为了最大限度的降低打字速度,这么说就有点过分了。不过,后来重新发明的布局,特别是DVORAK,的确比qwerty更具优势。但是,不管DVORAK的先天设计多么合理,如何在市场上如何造势,都不能撼动qwerty的主流地位。这很让人无语,由此可见,技术并不是决定市场的首要因素,关键是先占领市场,形成标准,不管这个标准有多差,只要有很多人遵守执行就行了,好比XX红色政党,又好比MFC,现在VC2012上居然还有他的一席之地,中国计算机图书还有那么多的VC书籍,实在令人疼心疾首。不过,本文的目的并非推荐DVORAK,当然,DVORAK键盘布局还是很值得广泛使用,但是既然已经如此的熟悉qwerty键盘了,那么也没有必要再训练了,实际上,qwerty已经足够日常使用了,我们平时打字,最大的限制在于大脑的速度,键盘布局到不是瓶颈。
      我要说的是,对于码农来说,键盘的另一不合理之处在于,小指的压力过大,左小指还好,只需负责Esc、~、……、A、Z等11个键位,先不论esc太远,这让vim情何以堪,而无关紧要的大小写切换键居然占据了那么优势明显好用之要地,等等无理设计。右小指表示压力更大,起码打了两倍,因为它的掌管比左小指的大了一倍之多,几乎是主键盘的1/4之多的键位,而且这些键,使用率都相当的频繁,如果再加上上下左右方向键还有delete,这实在太无天理了。可怜的两只小指,弱不禁风,娇怯怯,却要承受着生命难以承受之痛。相比之下,平时最能干的大拇指,居然只负责长长的空格键和两只alt这三个,这种不合理不公平的待遇,不禁让人怒从心头起,恶向胆边生,必须改革,彻底改革。给小指减负,给大拇指加负。
      当然,改革之前,先介绍windows下两大偷天换日的键盘修改利器,autohotkey和keytweak,其性能和使用说明,请各位自行百度谷歌。为了达到目的,老夫真的是挖空心思,无所不用其极。方法如下:
      1、借助autohotkey,将右手的所有键位都往右挪一格,也就是说,原来的7ujm这4个键,被发配到8ik,上,而8ik,就到了9ol.上,其他的以此类推,至于最右边的=\'/就只好屈居于开始时的7ujm上了。这样一来,小指起码少按了4个键位。右拇指只要愿意,可以不费力的按到右win键了,现在,两只拇指终于可以掌控四个键位了,四个很重要的键位,恩,目前除了space,其他三个似乎没啥特别,但很快,就会看到剩下来的三个中的其中一个,将发光发热,照耀整个键盘,最有作用。
      2、众所周知,上下左右home end 和翻页,这些键,其实也很重要,但是要按到它们,必须跑大老远,挥动右手做大幅度的机械运动。以至于,在vim和emacs中,都有各自的快捷方式来实现同样的功能。什么hjkl,什么ctrl+n,ctrl+p等等,不一而足,这种快捷方式,居然是其优于其他编辑器的亮点之一。但是,上下左右等键位可以配上ctrl、shift、win修饰键,然后马上就可以做出很多种组合,当然,emacs和vim也真是神通广大,针对每种组合,基本上都有对应的快捷键,只是记忆起来,实在麻烦。而区区在下,还曾经吭哧吭哧的拼命记忆过。好吧,好不容易习惯了vim和emacs那套逆天指法,却发现只能在vim或者emacs的环境下使用,屠龙之技,屠龙之技。我们要求的是,能够有一套放之于四海而皆准的指法,可以在所有的软件下,所有的场合下都发光发热。
      可能吗?确实有办法,就是在新键盘布局下,将右拇指能比之前轻松的按到的alt,摇身一变,变成换挡键,只要此键一按,马上wsad(游戏模式下的上下左右方向键)就变成上下左右了,配合jkl就可以组合出ctrl shift alt等效果。ec为home、end,rv则是上下翻页,f为esc键,各种各样,何其方便哉!剩下来的问题,就是右alt该何去该从,很简单,鹊巢鸠占,老实不客气,就占到右win键上,至于右win键怎么办,该怎么方便就怎么方便,甚至不存在,也没关系。制造换挡键,必须用到keytweak,autohotkey是不行的,鉴于数字小键盘上的除号实在很少用到,因此就拿他来当牺牲品了。其他的种种,请大家参考随文附上的ahk脚本。
      这样一来,只要稍加训练,键盘用起来将会很爽了。不爽的是,用别人的电脑,将特别的不习惯,各种难受。
      此外,右ctrl,可以用右掌腹来按,不必烦劳小指,他已经够累了。然后,汉字输入,要用拼音,最好是双拼,切记切记。不要在用什么五笔了,那是特别落后的输入法,其令人发指之处,可以和mfc值得一拼。在下曾经是五笔高手,下过苦功夫,多少个夏天夜晚,挥汗如雨,苦练五笔,一分钟达到百多字,绝对有资格说五笔的不是。现在我用双拼很高兴,已经不记得五笔的很多字根了,才不到半年的时间。
      其实,我都努力过,只是,都把汗水和精力,放在垃圾上了。C++是垃圾吗,当然不是了,但实际上,……,我觉得C++可以和粪便有得一比,作为肥料,还是很好地。


7::=
8::7
9::8
0::9
-::0
=::-


u::y
i::u
o::i
p::o
[::p
]::[
\::]


j::h
k::j
l::k
SC27::l
'::SC27


m::n
,::m
.::,
/::.


y::\
h::'
n::/


NumpadAdd::=
Shift & NumpadDel:: Send, {Backspace}


NumpadDiv & a:: Send, {Left}
NumpadDiv & d:: Send, {Right}
NumpadDiv & w:: Send, {Up}
NumpadDiv & s:: Send, {Down}


NumpadDiv & e:: Send, {Home}
NumpadDiv & c:: Send, {End}
NumpadDiv & r:: Send, {PGUP}
NumpadDiv & v:: Send, {PGDN}


NumpadDiv & z:: Send, {BackSpace}
NumpadDiv & x:: Send, {Delete}
NumpadDiv & f:: Send, {Escape}


CapsLock::LControl
LControl::Esc
Esc::CapsLock


NumpadDiv & k:: 
    Send {Control down} 
KeyWait k  ; 等待用户释放按键.
    Send {Control up} 
return


NumpadDiv & Shift:: 
    Send {Shift down} 
KeyWait Shift  ; 等待用户释放按键.
    Send {Shift up} 
return


NumpadDiv & Control:: 
    Send {Control down} 
KeyWait Control  ; 等待用户释放按键.
    Send {Control up} 
return


NumpadDiv & Alt:: 
    Send {Alt down} 
KeyWait Alt  ; 等待用户释放按键.
    Send {Alt up} 
return


NumpadDiv & #:: 
    Send {Win down} 
KeyWait #  ; 等待用户释放按键.
    Send {Win up} 
return


NumpadDiv & l:: 
    Send {Shift down} 
KeyWait l  ; 等待用户释放按键.
    Send {Shift up} 
return


NumpadDiv & SC27:: 
    Send {Alt down} 
KeyWait SC27  ; 等待用户释放按键.
    Send {Alt up} 
return


NumpadDiv & ':: 
    Send {LWin down} 
KeyWait '  ; 等待用户释放按键.
    Send {LWin up} 
return
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值