なぜですか space 一部のビューアーアプリ、特にブラウザーとPDFリーダー?
私にとってこれは少し直観に反しているように思われます。また、この動作はゲームやその他のインタラクティブなHTML5アプリに影響します。アクションをスペースバーにマップすると、ページが下にスクロールする可能性があるため、意図したとおりではありません。また、矢印キー、Page Downボタン、およびマウスのスクロールホイールは、通常、ページを下にスクロールするのに十分なオプションです。
この振る舞いに歴史的またはユーザビリティの理由はありますか?
歴史的な理由は、スペースバーが more で行うことです。これは、テキストページャーの最も一般的な(そしておそらく最も古い)デモニネーターです。 more
では、キーボードの最大キーを最も一般的なアクションにマップするのが理にかなっています。次のページを表示します。
more
の栄光の日々では、マウスのスクロールホイール、ページダウンボタン、または場合によっては矢印キーを数えることができませんでした。 more
には「ページアップ」機能さえありません(戻ることはできません)。
テキストベースの世界では、more
は主に less (whichcan後退します)、そのスペースバーの慣習は残っており、GUIの世界にも移行しています。
スペースバーはキーボードの最大のキーであり、その結果interactで最も簡単なキーです。そのため、アプリは次の目的でスペースバーを使用する傾向があります。
たとえば、メディアプレーヤーの主なアクションは、再生と一時停止を切り替えることです。それは単純で(はい/いいえの切り替え)、繰り返され(間隔を置いて)、許されます(結局のところ、切り替えです)。
ブラウザの主なアクションはscrollです。これは、Webがまだコンテンツを読み取ることを目的としているためです。それは簡単で(下に行くだけ)、繰り返され(ステップごとにスクロールします)、許されます(マウスまたは矢印を使用するか、Shift +スペースで戻ることができます)。
スペースバーがページダウンに使用されている理由は何もありませんが、IBMがPCの設計基準を設定していた当時(今日の設計に依然として大きな影響を与えています)、元の IBM = AT 84キーキーボード 1981年以降(IIRC)には、ページアップ/ダウンまたは専用の矢印キーがありませんでした(数字パッドを共有していました):
標準的な 101キーキーボード は、3年後まで登場しませんでした。 IBMにも競合他社があり、奇妙な代替案がいたるところにありました。 MIT Space Cadet 、これにはページのアップ/ダウンがなく、矢印が漠然と矢印に似ています:
上記のリンクからre:ハンドキー(強調は私のもの):
親指、上下、左右のキー。 これらが「はい/いいえ」の質問に答えるためのものなのか、ナビゲーションのためのものなのかは、はっきりしていませんでした。このキーボードを使用したグループでは、矢印キーに対する文化的な嫌悪感がありました。正直なところ、これ以上の理由はわかりません。
当時の新しい(そして時には競合する)テクノロジーとインターフェースの急速な開発により、おそらく何年にもわたってページのアップ/ダウンが発生し、矢印が信頼できない/一貫性のない相互作用のソースになりました(当時の標準化はそれほど普及していませんでした)。これらのキーボードすべてに共通する1つのキーはスペースバーでした。それは常に存在し、変更されていません。
また、マウスは、101キーキーボードとほぼ同じ時間までは、一般の消費者の使用に実際には入りませんでした。最初のMacは1984年に発売され、多くの眉を集めました。マウスが今日と同じくらい定番になったのはしばらく前のことでした(今日でも、マウスはまだ選択肢の1つです。キーボードがないよりも、マウスがないコンピューターを見つける可能性がはるかに高いです)。
これとjgthmsが彼の回答で提示する使用ポイントを組み合わせることで、more
(Celadaの回答で述べた)などのプログラムがスペースバーを非常に頻繁に使用した理由は more
は1978年に作成された で、追加のキーボードキーの真に意味のある標準化が行われるずっと前に。時間の経過とともに、それはおそらくスタックしました。
純粋なソースコードの観点からは、「なぜ」は答えるのが難しいかもしれません。
最新の WebKit では、コメントはありません(GTK実装もEFL実装も):
case VK_SPACE:
granularity = WebCore::ScrollByPage;
if (keyEvent.shiftKey())
direction = WebCore::ScrollUp;
else
direction = WebCore::ScrollDown;
break;
時計を NCSA Mosaic に巻き戻し、解説なし:
case XK_space:
XtVaGetValues (win->scrolled_win, XmNverticalScrollBar,
(long)(&sb), NULL);
if (sb && XtIsManaged (sb)) {
XtCallActionProc (sb, "PageDownOrRight", event, params, 1);
}
break;
さらに戻る Nexus(nee WorldWideWeb) キーボードナビゲーションがなかった1992年頃: ナビゲーションはマウスで行われた 。
WWWLineMode 1991年頃、スペースは何にもマップされませんでした。 WWW/LineMode/Implementation/www.c
、 関数 User_Selection
にはスペースバーへの参照がありません。ただし、改行、つまりENTER
キーが次のページにマッピングされます。
このレビューに基づいて、機能がMosaicに導入されました。しかし、ErwiseやViolaWWWのソースが見つからなかったので、たぶんそこにあります。
これを考えると、MosaicがWindowsで人気があり、WindowsがIBM ATキーボードを使用していたという事実から、@ JasonCが提供した説明はおそらく私にはおそらくあるようです。
私にとってこれは少し直観に反しているように思われます。また、この動作はゲームやその他のインタラクティブなHTML5アプリに影響します。アクションをスペースバーにマップすると、ページが下にスクロールする可能性があるため、意図したとおりではありません。
歴史的背景に関する主な質問は他の回答でカバーされていますが、私はこれを指摘する価値があると思いました。 (これはおそらくコメントとしてはふさわしいでしょうが、私の評判ポイントの欠如がコメントを妨げています。)
ほとんどの適切に設計されたページ、ゲーム、またはアプリは、ゲームまたはアプリにフォーカスがあるとき、特定のキーのデフォルトの動作(たとえば、JavaScriptのevent.preventDefault()を使用する)を防止することにより、この問題に対処します。フォーカスは、ほとんどの場合、ユーザーがタブを介してクリック/タッチ/ナビゲートしたときに、ページコンポーネントによって獲得されます。プログラムで割り当てることもできます。もちろん、ページ全体を制御できる場合は、アプリやゲームだけでなく、ページ全体のスペースバーのデフォルトの動作を防ぐことができます。