改进的Colemak编程

Pet*_*ron 8 keyboard colemak keyboard-layout

是否存在专为编程而设计的改良Colemak键盘布局?

我几天前在Colemak键盘布局上冷烤了,我非常喜欢正常的打字,但是我经常编写像;(分号)键这样的字符.修改后的布局有大括号和圆括号的直接映射会很好.

显然,我可以通过反复试验重新映射这些密钥,但我希望有人做了一些测试来确定公共语言字符的最佳布局.

Aki*_*iva 11

背景

这是我一个半小时的键盘布局历史和理论介绍:https : //www.youtube.com/watch?v=i1hK1qrdYtU

我对此非常重视,并一直在进行尝试。我痴迷于高效的工作,并且表现出令人信服的成果,例如,我保证这是非常值得努力的。

在我的回答中,我将在理论上做更多的事情,因为我的布局主要是针对我的特定编程需求量身定制的,并且不适合说Python开发人员,除非他调整了bigrams和Level 1字符。

使用理论,并根据您的需求进行调整。

术语:

  • Altgr:通常启用了正确的alt键,可以编写外来字符或重音符号。
  • 等级1:布局无修饰键(ShiftAltgr)。
  • 第2级:布局 Shift
  • 第3级:布局 Altgr
  • 第4级:布局 Shift + Altgr

Beta键盘-Vim程序员的Colemak v3

这是一个正确的导向布局,我WAS使用过去的一年里: 在此处输入图片说明

请记住,此布局针对以下方面进行了优化:

  • vi(请注意,方向键位于右侧,就像vi
  • C语言
  • APL(是,APL)
  • XML(第二考虑)
  • 重击(set -o vi

它涵盖了有关键盘布局的三个主要的基本理论:

  1. Up Down Left Right Home End PgUp PgDn应该将方向键委派给第3级,以达到自然手指放置的目的。
  2. 两个Alt键都应该变成Altgr,这样您就可以用任何一只手访问Level 3。
  3. 数字应从第一行取下,并组织成键盘。通用计算器符号应围绕它。

以下是这些理论在使用一年后的效果:

理论1-方向键

全面改进工作流程,尤其是文档编辑(与vi已经提供该功能的编程相反)

  • HomeEnd当钥匙到达正确的位置时,钥匙非常有用。
  • 方向键是必不可少的。
  • PgUpPgDn没有得到充分利用,但是这可能是因为倾斜的键盘位置错开了,使您不得不伸手去拿Prior。当前测试此方法的方式相反(左图所示)。

理论2-AltGr

这是必要的要求,因为我们有两个Shift键,两个altgr键分别位于空格键的左和右,这是徒劳的。仅与一个人一起工作将使键入过程很痛苦。

尽管有必要,但必须提及的是,拇指如此频繁地向下按压可能会产生一些非常轻微的疼痛。付出很小的代价。如果您可以获得缩小的空格键布局,例如:在此处输入图片说明

这可能会解决问题。

对于大多数用户而言,另一个问题将是巨大的,它缺少Alt键。但是,在Ubuntu上,您可以使用HUD访问大多数菜单命令,从而无需使用90%的键盘快捷键Alt。我偶尔遇到的唯一问题是无法访问TTY终端。(Alt+ Ctrl+ F1)我从来没有打扰过重新映射它,尽管我应该这样做。

理论3-数字键盘

在此处输入图片说明

这是一个艰难的过程,即由于它的左方向。在以前的版本中,我尝试将键盘向上移动一个级别,以使0和1出现在主行上,并且数字顺序相反(请注意它的显示方式3210而不是0123)。

最终我变得更喜欢它,但是调整非常艰巨,因为:

  • 键盘的肌肉记忆最常使用右手。
  • 水平交错的键盘布局(这是非常愚蠢的。请参阅我的youtube视频),尽管我做出了最佳的折衷,但还是具有挑战性的数字键盘。
  • 数字的倒序,这是必需的,因为您希望食指可以访问0和1(最常见)。

在一天结束时(以及经过数月的调整),我确实更喜欢它,尽管我觉得它只有40%的可能。但是,更重要的是,我发现了一些东西:

  • + 实际上,在第3层上打字比在第1层上的拐角处或什至在第一行上更容易打字。
  • .上非常有用b

考虑到所有这些,我决定尝试通过将数字键盘切换到右侧,将方向键切换到左侧来进行实验。在这种情况下,我将介绍许多未提及的小改进,以及我的主要新理论。

Beta WADS-键盘编程器Colemak v1

在此处输入图片说明

优化:

  • C语言 (); // << "" \n \t m_
  • 重击 / "" < * && || \ \( \) ^C
  • 文件编辑 ? ! Shift_R Control_R

保持理论:

  • 反向括弧:最好()更改为的方向)(。这是Colemak基本理论的一部分,该理论指出,将手指从小指滚动到拇指更容易。(Colemak是一种布局,强调手指滚动而不是手部更改,Dvorak优先考虑)。对于这个极其常见的C ++三元组特别有用。();尽管看起来倒是很容易,但是它很容易习惯。
  • 2级基本未触及:这只是为了进行实际调整。它不是非常重要的层,因此可以保留它以保持肌肉记忆。
  • 在shift和z之间进行控制:最佳mod。复制,粘贴,全选和撤消不再痛苦且笨拙,现在只需简单的指尖操作即可。
  • 返回第3级右边的小指:在vim中,o创建新行。Return在此键上放置一个用于文本编辑是很有意义的。事实证明它非常方便,并且很快就变成了肌肉记忆。
  • 双引号中指:在第2层加双引号是犯罪分子。我很满意最容易达到上排键,4
  • ?在第1级:老兄,我喜欢这个。不必手动组合键就可以编写文档。

新理论

  • 小指不要触摸空格键行,甚至不要触摸Shift键:将控制键向上移动一个级别的好处使我完全相信了这一点。(请注意,我有一个法式布局,将左移变成两个按钮。)毕竟,这就是开发可怕的emacs小指的原因。这样,将移位键放置在主行上。虽然我很想将Capslock转换为Shift键并向后退键Alt+D,但我还是要坚持使用Shift键o。以我的短暂经验,我已经爱上了它,并且不会错过任何我以前在这里拥有的东西。
  • 永远不要在第2层结束语句,段落或句子。由于我?在第1层取得了巨大的成功,所以我决定也将其放在!那儿,尽管位于最远的角落。我把它搬到远角,因为它不是那么常见,¬并且~是假的/不语句都代表。!= ~Deconstructors (P & ¬Q)。但是,主要的重点是您应该能够完成陈述,段落,句子等,而不必执行键组合,因为这会干扰流程。
  • 利用WADS的肌肉记忆:vi您用右手指示方向时,玩过视频游戏的任何人都习惯于用左手进行运动,因此应该遵循的做法是,用左手进行运动是完全可行的。将重新映射Vim,以使其与此相符,这将需要一些调整。
  • 键盘只能位于右手:如前所述,这在视觉上更有意义,在食指上保持0和1,并利用了通过键盘开发的肌肉记忆。
  • 逃离第3级a我们将看看它是如何发展的。我曾在波浪号上尝试过,但通常忘了它在那儿。作为vim用户,我确实确实需要Escape,但是通常我会通过映射来缓解这种需求,inoremap以便在按下3级方向键时可以进行Escape (并移动光标)。
  • 级别3,C并且V应该填充一个非常常见的非字母数字二元组:目前,我已经有了它,*/因为这对于评论很重要,但是它可以填充许多不同的内容。
  • 1级及以上,处于其换档位置:换档时尝试按下的最令人沮丧的角色。这同样适用于^我将使用一个公平位在正则表达式。如果您完全依靠这些,则需要为它们找到一个更好的地方。
  • 将尝试在级别3 Z和上插入和删除X

其他一切基本上都只是装饰。同样,您可以根据用例来移动它们。python开发人员可能希望将其:置于第一个级别,并将其与组合在一起Return

理论失败

  • Shift+ Backspace应该执行Delete:的方式太令人困惑,永远不会有用。

  • 78 /*bigram:实际上这还不是那么糟糕,但是鉴于bigram双向发展,它并不是非常有用。它也需要很大的拉伸。我认为最好每只手都有字符,这样比较容易将两种方式组合在一起。

  • Tilde Escape:即将被利用。如果您无论如何都要伸展那么远,不妨按一下我经常这样做的转义键。

  • { }在第1层右手边的Enter旁边,不可逆转:这是一个可怕的坦率痛苦的二元论,如果您需要,则执行起来很尴尬{}。单个无关字符(例如,您不会连续推送的两个字符)的更好位置


建立自己的自定义布局

https://docs.google.com/spreadsheets/d/1LkvWvwjahVaJyaN9hmDdulrAN08x7gQEM6DT4NFkok4/edit#gid=507511935

我已经创建了此电子表格,该电子表格将生成适当的xkb代码以插入到布局中。只是:

  1. 更改字符 Layout Definition Page
  2. 这会将字符转换为unicode,并将其串联为xkb代码。
  3. 转到XKB页面,选择行,然后将其插入到布局中。
  4. 正确地添加新的布局。

现在,创建合适的布局实际上非常困难,因此,我只替换colemak定义中已经存在的内容(首先备份,如果您输入有误,则根本无法键入,甚至可能需要实时启动才能输入解决此问题。)

它看起来像这样:

sudo vim /usr/share/X11/xkb/symbols/us

// Colemak symbols for xkb on X.Org Server 7.x
// 2006-01-01 Shai Coleman, http://colemak.com/
// Akiva Abraham WADS-Keypad Programmer's Colemak

partial alphanumeric_keys
xkb_symbols "colemak" {

include "us"
name[Group1]= "English (Colemak)";

key <CAPS> { [    BackSpace,    BackSpace,       BackSpace,        BackSpace ] };
key <LSGT> { [Control_R, Control_R, Control_R, Control_R] };
key <SPCE> { [        space,        space,           space,     nobreakspace ] };

key <TLDE> { [U0021, U007E, U00AC, U00A4] };
key <AE01> { [U005B, U0021, U005B, U20AC] };
key <AE02> { [U005D, U0040, U005D, U00A2] };
key <AE03> { [U002F, U0023, U002F, U00A3] };
key <AE04> { [U0022, U0024, U0022, U00A5] };
key <AE05> { [U003C, U0025, U003C, U003C] };
key <AE06> { [U003E, U005E, U003E, U003E] };
key <AE07> { [U0026, U0026, U0026, U2030] };
key <AE08> { [U002A, U002A, U002A, U00BC] };
key <AE09> { [U0029, U007D, U0029, U00BD] };
key <AE10> { [U0028, U007B, U0028, U00BE] };
key <AE11> { [U005F, U005F, U002D, U2308] };
key <AE12> { [U003D, U002B, U003D, U230A] };

key <AD01> { [U0071, U0051, minus, U00A9] };
key <AD02> { [U0077, U0057, Home, U00AE] };
key <AD03> { [U0066, U0046, Up, U2191] };
key <AD04> { [U0070, U0050, End, U00B6] };
key <AD05> { [U0067, U0047, Prior, U2371] };
key <AD06> { [U006A, U004A, U0023, U2372] };
key <AD07> { [U006C, U004C, U0037, U00B0] };
key <AD08> { [U0075, U0055, U0038, U22A4] };
key <AD09> { [U0079, U0059, U0039, U00A7] };
key <AD10> { [U003B, U003A, U2234, U2234] };
key <AD11> { [U005C, U005C, minus, U0025] };
key <AD12> { [U007C, U00A6, U007C, U2262] };
key <BKSL> { [U0027, U0060, U0060, U2260] };

key <AC01> { [U0061, U0041, Escape, U2122] };
key <AC02> { [U0072, U0052, Left, U2190] };
key <AC03> { [U0073, U0053, Down, U2193] };
key <AC04> { [U0074, U0054, Right, U2192] };
key <AC05> { [U0064, U0044, Next, U2228] };
key <AC06> { [U0068, U0048, U0024, U2227] };
key <AC07> { [U006E, U004E, U0034, U22A3] };
key <AC08> { [U0065, U0045, U0035, U22A5] };
key <AC09> { [U0069, U0049, U0036, U22A2] };
key <AC10> { [U006F, U004F, Return, U2235] };
key <AC11> { [Shift_R, Shift_R, Shift_R, Shift_R] };

key <AB01> { [U007A, U005A, Insert, U2229] };
key <AB02> { [U0078, U0058, KP_Delete, U222A] };
key <AB03> { [U0063, U0043, U002A, U2282] };
key <AB04> { [U0076, U0056, U002F, U2283] };
key <AB05> { [U0062, U0042, U002E, U2022] };
key <AB06> { [U006B, U004B, U0030, U00BA] };
key <AB07> { [U006D, U004D, U0031, U00B9] };
key <AB08> { [U002C, U003C, U0032, U00B2] };
key <AB09> { [U002E, U003E, U0033, U00B3] };
key <AB10> { [U003F, U003F, U002F, U2020] };

include "level3(ralt_switch)"
include "level3(lalt_switch)"
};
Run Code Online (Sandbox Code Playgroud)


bph*_*bph 1

您看过 colemak.com 上的 dreymar 广角模组吗?

你可以坚持; 位于键盘中间,以便于使用其上方和下方的 [ 和 ] 进行访问?