一种理想的编程键盘布局

Jon*_*rdy 78 language-agnostic qwerty dvorak keyboard-layout

我经常听到抱怨为了简洁而大量使用符号的编程语言,最明显的是C和C++(我不会触及APL),很难打字,因为它们需要经常使用shift键.一两年前,我自己厌倦了,下载了微软的键盘布局创建器,对我的布局进行了一些修改,并且没有一次回头看.速度差异惊人; 通过这些简单的更改,我能够以大约30%的速度输入C++代码,当然这取决于毛茸茸的程度; 最重要的是,我在普通运行文本中的打字速度不会受到影响.

我的问题是:编程中存在哪些备用键盘布局已经普及,其中任何一种仍然在现代使用,你个人使用任何改变的布局,我的布局如何进一步优化?

我对标准QWERTY布局进行了以下更改.(我不使用Dvorak,但有一个程序员Dvorak布局值得一提.)

  • 交换数字与顶行中的符号,因为长或重复的文字数通常被命名常量替换;
  • 使用代字号交换反引号,因为反引号在许多语言中很少见,但析构函数在C++中很常见;
  • 交换减去下划线,因为下划线在标识符中很常见;
  • 用方括号交换花括号,因为块比下标更常见; 和
  • 用单引号交换双引号,因为字符串比字符文字更常见.

我怀疑这最后可能是最有争议的,因为它通过要求使用shift来键入常见的收缩来干扰运行文本.这种布局显着提高了我在C++,C,Java和Perl中的打字速度,并且在LISP和Python中有所增加.

Yac*_*oby 31

我仍然认为打字速度不是项目完成所需时间的主要因素.如果是,那就有一个大问题(编码周节省了我们的计划时间).

关于你的问题,我更喜欢使用标准布局,因为这意味着当出现标准键盘布局时,我不必花费前10分钟看起来很愚蠢.

您建议的一些替换,例如带有特殊字符的顶行不会产生一点差异,因为另一方面外侧手指应该同时移动.

恕我直言,有助于上面链接布局的一件事是只使用键盘快捷键.建议使用Vim和Emacs.它可以更快地移动文本.

  • 哦,不,打字速度绝不是瓶颈,但与此同时,为什么让像键盘一样愚蠢的东西妨碍你?我在布局和其他布局之间来回切换都没有问题,因为我经常使用它们; 我只是喜欢我的.我必须承认,emacs可以快速编程 - 当我不需要查找键序列时. (14认同)
  • 我坚持认为,通过在内存中保留几个键盘布局,您正在破坏您的肌肉记忆,从而使您的打字速度变慢. (6认同)
  • 哦,左右手运动的同时性也没有什么区别:在敲击钥匙之前,仍需要按下修改器.毫无疑问,毫无疑问,为什么会阻碍自己呢?使用不适合您的布局编程就像在粘性键盘上编程一样. (4认同)
  • -1:对讨论没有任何贡献(“看起来很愚蠢”的论点甚至没有经验的数据支持,这是一种前瞻性的担忧)并且无法修复。 (2认同)

小智 14

我会用以下方式处理你的问题.任务是组织键盘,以便最小化给定文本的击键和手部移动.

迈向可能解决方案的步骤.制作一个程序:

  1. 采用包含源代码的文本文件.(越大越好,各种来源!)
  2. 计算每个符号的使用频率(它在文本中的存在).
  3. (可选)基于步骤2:程序为每个符号生成关键笔划数,以及手必须从中心位置移动多远.因此,您将测量键盘布局的效果.

现在手动或通过编写程序以下列方式重新定义您的布局.将最常用的符号放在靠近强手的中心位置.第二个符号位于中央位置的弱手.第三个符号可以追溯到你强有力的手......等等.然后,您逐渐从手的中心位置移动到键盘的更"远"区域.当所有键盘都已满时,您将继续分配键的过程,但这次按下Shift键.另一个区别是,当Shift关闭时,您不会为每个符号旋转强弱手.首先按下shift键,您将填充键盘上的中心位置,然后移动到更远的位置.

当您为新布局再次执行步骤3以查看布局如何改进时.

您可能必须随身携带键盘.在光明的一面,没有人会触摸你的电脑.它会让你看起来像专业版.

最后,不要忘记分享您的发现.


小智 12

我现在正在使用Colemak布局的变体,其中包含大量符号变化:

没有SHIFT:

` - {} []; <>()_ =
qwfpgjluy*/#\
arstdhneio'
zxcvbkm.!

使用SHIFT:

~1 2 3 4 5 6 7 8 9 0 + +
QWFPGJLYY @ ^ $ |
ARSTDHNEIO"
ZXCVBKM%:?

也许我会恢复/键......

但这不是基于任何合理的研究,我也喜欢看到一个布局优化(优化包括手工改造等东西,也包括ZXCV保存......)和基于源代码的语料库,因为所有这些布局似乎只为散文而优化.例如,'f'是C中非常常见的字母(if,for).

更新:我目前正在使用

` - {} [] @ <>()_ =
qwkrgyulp*; #
asftdhneio'\
\ zxcvbjm./

使用SHIFT:

~1 2 3 4 5 6 7 8 9 0 ^ +
QWKRGYULP&!$
ASFTDHNEIO"|
| ZXCVBJM%:?

这是基于从Carpalx获取的6键交换部分优化,保留了通常的剪切/复制/粘贴/撤消快捷方式,并进行了修改,以便更好地访问常用的编程字符.


Tgw*_*man 10

制作一个简单的键盘记录器,然后计算每个键被按下的次数.运行一两天,然后将输出保存到文本文件.每隔一段时间做一次.使用什么布局并不重要,因为您只是看到哪些键被最多使用.

如果你想做一个好的布局,你不能害怕摆脱常态.我建议将前11个键放在主行,然后将前11个键作为顶行(将返回键上方的2个键保留为最少使用的键),然后将第3个前11个键作为最下面的行.现在应该剩下4把钥匙了.把它们放在 - =和]\slots中.恭喜!您现在已经为您的目的制作了出色的键盘布局!= d

  • 很好的答案:键盘应该由所有者定制 (2认同)
  • 对于键盘使用统计,已经有很好的程序可以显示热图,例如:[WhatPulse](https://whatpulse.org/) (2认同)

Ste*_*314 9

总的来说,我认为拥有一个好的文本编辑器并知道如何使用它比尝试提高你的打字速度更好.能够记录和重放宏有时是救生员,并且选择快捷方式分配的代码片段可以很方便,因为通常会对可以转换为库的内容施加语言限制.

更一般地说,我认为真正的生产力提升者都是关于知识......

  • 了解可用的工具和库以及如何使用它们.
  • 了解您正在处理的代码的整体结构,而不仅仅是您的一点点.
  • 了解关键算法,设计模式和习语,这样您就不必重新发明它们.
  • 充分了解规则,你可以灵活 - 你知道何时打破它们.
  • 了解你的同事及他们的优点,缺点等 - 即知道何时自己想出什么,但也知道什么时候和谁要问.

FWIW,我并不是声称对所有这些都很强大.我一直过于偏向于自己解决问题,并且过于强烈地倾向于重新发明轮子和宏伟的建筑方案.

无论如何,我只是怀疑改变和学习键盘布局所花费的时间会分散更重要的问题.