web-dev-qa-db-ja.com

プログラマーにとって理想的なキーボードレイアウトを計算する方法は?

プログラミング用の新しいキーボードレイアウトを作成することを考えています。現在、私は主にHTML、JavaScript/jQuery/CoffeeScript、CSS/LESS/SASSでプログラミングしていますが、シェルスクリプトとRegExに手を出すかもしれませんが、おそらくLUA、C++、およびJavaキーの配置を科学的に証明したいのですが、アイデアや要件があります。自分で発明したものもあれば、他の人から取ったものや派生したものもあります。

  • ほとんどすべてのキーを再配置できます
    • [〜#〜] return [〜#〜]左シフト左コントロールスペースバー、&[〜#〜]タブ[〜#〜]はそのままにする必要がありますが、すべて数字、記号、移動キーなど、その他のキーは移動できます
    • 一般的な元に戻す/切り取り/コピー/貼り付け/保存のため、zxcvとおそらくsをそのままにしておくのが最適な場合があります習慣:)
    • [〜#〜] delete [〜#〜]キーはCAPS LOCKの場所に移動される可能性があります:)
    • (){} [] <>のような一致する角かっこを並べておく可能性は低いです。下記参照
  • IMHOがキーの使用状況をカウントする唯一の正確な方法は、ファイルのキーカウントではなく、キーロギングによるものです:
    • 「プログラミング」の多くは、電子メールの送信、フォーラムへの投稿、Twitter、バグ報告、Webサーフィンなどです。
    • キーボードの使用法の多くは「動き」だと思います。フィールド間のタブ移動、ページダウン、カーソルの移動など。これらはファイル出力によってキャプチャされません。
    • 多くのエディターはオートコンプリートとマクロを使用するため、クローズデリミネーター:)}]>はオープナーほど頻繁に入力されない可能性があるため、キーロガーとファイルの解析のみが正確になります。

だから私の質問:

  1. safeフリー/オープンソースソフトウェアキーロガーとは何ですか?自分で別のファイルを送信しない限りファイルをアップロードしませんか?私は、セキュリティのためだけでなく、私の分析を私見に投げ込む可能性があるため、ログイン名とパスワードを収集したくありません。
  2. シングルキーカウントとペアキーカウントをダイジェストするためにクライアント側で使用できるプログラムは何ですか?または、どのように最適に構築するのですか?
  3. 手伝ってくれるボランティアを見つけるのに最適な場所はどこですか?

これまでの最高の調査: http://www.michaelcapewell.com/projects/keyboard/layout_capewell.htm

http://viralintrospection.wordpress.com/category/technology/keyboard-layouts/

&ウィキペディア:Keyboard_layout#Non-QWERTY_keyboards_for_Latin_scripts

TIA!

8
tomByrer

WhatPulse のようなプログラムを使用して、どのキーが押されたか、およびその回数を記録します。

FreeNode IRCネットワークでキー周波数をまとめる方法について尋ねた後、ユーザーは私をこれに導きます:

  1. プログラムなどのテキストを取得し、それらをコピーします。
  2. http://type.trmnl.org/ に移動します
  3. ボタンの下で、「貼り付け時にクリップボードの内容で自動起動する」のチェックを外してください。
  4. 次に、プログラムをテキストボックスに貼り付けます。
  5. Cntrl + Shift + Kを押すと、コンソールが開きます。
  6. count_digraphs()と入力し、Enterキーを押します。

結果は次のように読み取られます。"ar" 7 17 10 "ra"これは、「ar」が7回押され、「ra」が10回押され、「ar」と「ra」が一緒に17回押されたことを意味します。

2
cutrightjm

エディターで移動するためのキーは、ほとんどの場合、QWERTYで可能な限り効率的に使用できるように調整されているため、キーレイアウトを変更して、すべての最適配置が必要な場合は、キーを再マッピングする必要があります。 、あなたが努力します。例えば。 Vimでは、HJKLボタンはQWERTY配列の理由で使用されており、キーマップが変更された後、おそらく同じ場所に再マップする必要があります。

私が言いたいのは、動きや編集キーを追跡し、それを新しいレイアウトの基礎として使用することはあまり役に立たないということです。なぜなら、それらは簡単に再構成可能(どんなエディターでもそれだけの価値があり、プログラマーのレイアウトについて話しているので、おそらくVimまたはEmacsについて話しているので、リテラルキーの配置を妨げるべきではなく、すでに最適化されています(ここでもメモ帳については話していません)。

生産性への非効率的な方法、特にプログラマーの場合、** imho **である問題を解決しようとしています。単にツールについてもっと学ぶことで、はるかに大きな効果があります(もう一度:おそらくVim/Emacs)。プログラミング時に実際に文字を書くために費やされる時間がますます少なくなり、オートコンプリート、自動タグ付け、自動インデント、クイック関数定義ルックアップなどに費やされる時間が増えます(ただし、より効率的です)。このすべてを行うためにすでに適応されています効率を可能にするために、そして大きなスピードブーストは単に慣れが必要です。したがって、異なるキーボードレイアウトはほぼ同じように生産性を損なうと主張します。これは、すでに多くののQWERTY演習があるためです。レイアウトを切り替える人がDvorakに費やすのと同じ分析トレーニング時間がQWERTYに費やされた場合、速度の向上にも気付くでしょう。スピードには明示的なトレーニングが伴います。

あなたがコピーライター/翻訳者/著者など、実際にキーのリテラルの意味で作業に時間を費やしている人であれば、別のレイアウトが役立つかもしれません。プログラマーにとって最良のヒントは、通常、少なくとも英語のキーボードレイアウトを取得することです。これは、プログラミングイディオムがこれらとそのキー配置によって形成されているためです(私のローカルキーレイアウトでは、@$[]{}~はすべてAltGrの背後にあります。 -最適な)。

tldr: Dvorak/Colemak/[次の「スライスされたパン以来の最良のこと」](おそらく)多くの流れるテキストを入力する人だけの問題を解決します特定の言語で(ほとんど多くの場合英語)。プログラミングの場合、必要なキーはリテラル言語と同じ制限を受けていないため、その目的に合わせてすでに最適化されています(ではなく「できるだけ速く書く」だけです。論理演算。Vimを参照)。代替レイアウトの学習に費やした時間と、何度も何度も発生することが最も確実な混乱は、ほとんどの場合、努力する価値がないことは間違いないと思います(あなた自身の混乱だけでなく、最後に使用したのと同じ端末に座っている他の人は投げますあなたのこと)、プログラマーのものも含めて。

4