web-dev-qa-db-ja.com

プログラミングに最適なキーボードレイアウト

簡潔にするためにシンボルを多用するプログラミング言語、特にCとC++(私はAPLには触れません)は、シフトキーを頻繁に使用する必要があるため、入力が難しいという苦情をよく耳にします。 1〜2年前、私は自分でそれにうんざりし、Microsoftの Keyboard Layout Creator をダウンロードし、レイアウトにいくつかの変更を加えました。速度の差は驚くべきものです。これらのいくつかの簡単な変更により、もちろん毛むくじゃらの程度にもよりますが、C++コードを約30%高速に入力できます。何よりも、通常のランニングテキストでのタイピング速度は損なわれません。

私の質問は次のとおりです:プログラミング用に存在する代替キーボードレイアウトはどのようなもので、人気があり、現在も使用されていますか?変更されたレイアウトを個人的に使用しますか?また、どのようにレイアウトをさらに最適化できますか?

標準のQWERTY=レイアウトに次の変更を加えました。 Dvorak は使用しませんが、 プログラマーDvorak レイアウトの価値はあります言及する。)

  • 長い行または繰り返されるリテラル番号は通常、名前付き定数に置き換えられるため、一番上の行にシンボルを含む番号を入れ替えます。
  • 逆引用符をチルダと交換します、多くの言語では逆引用符はまれですが、デストラクタはC++では一般的です。
  • アンダースコアとマイナスを入れ替え、識別子ではアンダースコアが一般的であるため。
  • ブロックは下付き文字よりも一般的であるため、中括弧を角括弧で置き換えます。そして
  • 文字列は文字リテラルよりも一般的であるため、二重引用符を一重引用符と入れ替えます

私はこの最後がおそらく最も論争の的になるだろうと思う、それは一般的な収縮をタイプするためにシフトの使用を要求することによってテキストの実行に最も干渉するからである。このレイアウトにより、C++、C、Java、およびPerlでの入力速度が大幅に向上し、LISPおよびPythonでの入力速度が多少向上しました。

78
Jon Purdy

私は、入力速度がプロジェクトの完了に要する時間の主な要因ではないとまだ考えています。もしそうなら、大きな問題があります(コーディングの週により、計画の時間を節約できます)。

あなたの質問については、標準のキーボードレイアウトが表示されたときに最初の10分間を愚かに見ている必要がないので、標準のレイアウトを使用することを好みます。

あなたが提案したいくつかの代替品、例えば一方、外の指は同時に移動するために移動する必要があるため、特殊文字を含む一番上の行はオンスの違いを生じません。

私見レイアウトのチェーンの上で役立つことの1つは、キーボードショートカットのみを使用することです。 VimとEmacsが推奨されます。これにより、テキストの移動がはるかに高速になります。

32
Yacoby

私はあなたの質問に次のようにアプローチします。タスクは、指定されたテキストのキーストロークと手の動きを最小限に抑えるような方法でキーボードを整理することです。

可能な解決策へのステップ。次のプログラムを作成します。

  1. ソースコード付きのテキストファイルを取得します。 (大きければ大きいほど、さまざまなソースから!)
  2. 各シンボルの使用頻度(テキスト内での存在)をカウントします。
  3. (オプション)ステップ2に基づいて、プログラムは各シンボルのキーストロークカウントに加えて、手が中央の位置からどれだけ移動する必要があるかを生成します。その結果、キーボードレイアウトの効果を測定できます。

次に、手動で、またはプログラムを作成して、次の方法でレイアウトを再定義します。最も頻繁に使用されるシンボルを、強い手に近い中央の位置に配置します。 2番目のシンボルは、中央の位置で弱い手に行きます。 3番目のシンボルはあなたの強い手に戻ります...など。次に、手の中心位置からキーボードのより「離れた」領域に徐々に移動します。すべてのキーボードがいっぱいになったら、キーの割り当てプロセスを続行しますが、今回はShiftキーを押したままにします。もう1つの違いは、Shiftが押されているときに、各シンボルの強い手と弱い手を回転させないことです。最初にシフトキーを押すと、キーボードの中央の位置に入力してから、より離れた位置に移動します。

新しいレイアウトに対して手順3を再度実行すると、レイアウトがどのように改善されたかを確認できます。

キーボードは常に携帯する必要があります。明るい面では、誰もあなたのコンピューターに触れません。プロのように見えます。

最後に、調査結果を共有することを忘れないでください。

14
Ge Spi

私は現在、シンボルの大幅な変更を伴うColemakレイアウトのバリアントで遊んでいます:

sHIFTなし:

`-{} []; <>()_ =
q w f p g j l u y * /#\
ar st t d h n e i o '
z x c v b k m、。 !

sHIFTを使用:

〜1 2 3 4 5 6 7 8 9 0&+
Q W F P G J L U Y @ ^ $ |
A R S T D H N E I O "
Z X C V B K M%:?

/キーを復元するかもしれません...

しかし、これは健全な研究に基づいていません。また、ソースコードベースのコーパスで最適化されたレイアウト(手の変更などのようなものを含む最適化、ZXCV保存など)を見てみたいです散文のみに最適化されます。たとえば、「f」はCで非常に一般的な文字です(if、for)。

更新:現在使用しています

`-{} [] @ <>()_ =
q w k r g y u l p *; #
a s f t d h n e i o '\
\z x c v b j m、。 /

sHIFTを使用:

〜1 2 3 4 5 6 7 8 9 0 ^ +
Q W K R G Y U L P&! $
A S F T D H N E I O "|
| Z X C V B J M%:?

これは、通常の切り取り/コピー/貼り付け/元に戻すショートカットを保持して Carpalx から取得した6キースワップ部分最適化に基づいており、通常のプログラミング文字へのアクセスを改善するために変更されています。

12
Jan

単純なキーロガーを作成し、各キーが押された回数をカウントします。 1〜2日実行してから、出力をテキストファイルに保存します。時々これをしてください。どのキーが最も使用されているかだけがわかるため、使用しているレイアウトは関係ありません。

適切なレイアウトを作成したい場合は、標準から離れることを恐れることはできません。ホーム行に沿ってトップ11キーを配置し、次にトップ行として次のトップ11キーを配置することをお勧めします(最も使用頻度の低いキーとしてリターンキーの上の2つのキーを残します)。 。 4つのキーが残っているはずです。それらを取り、-=および] \スロットに入れます。おめでとうございます!これで目的に合った素晴らしいキーボードレイアウトが完成しました! = D

10
Tgwizman

全体的に、テキストエディターが優れていて、その使用方法を知っている方が、入力速度を向上させるよりも優れていると思います。マクロを記録および再生できることは命の恩人となる場合があり、ライブラリに変換できるものには通常言語によって課せられる制限があるため、ショートカットが割り当てられたコードスニペットを選択すると便利です。

より一般的には、真の生産性向上剤はすべて知識に関するものだと思います...

  • 使用可能なツールとライブラリ、およびそれらの使用方法を知る。
  • ほんの少しだけではなく、作業中のコードの全体的な構造を知る。
  • 主要なアルゴリズム、設計パターン、イディオムを知っているので、それらを再発明する必要はありません。
  • ルールを十分に理解しているので、柔軟に対応できます。ルールを破るタイミングを知っています。
  • あなたの同僚と彼らの強み、弱みなどを知ること-つまり、自分自身で何かを考え出すときだけでなく、いつ誰に尋ねるかを知ること。

FWIW、私はそれらすべてに強いと主張しているわけではありません。私は常に自分自身で問題を解決することに偏りすぎており、車輪と壮大な建築計画を再発明する傾向が強すぎました。

とにかく、キーボードレイアウトの変更と学習に費やす時間が、より重要な問題から気を散らすことになるという疑いがあります。

9
Steve314