Why do Macs ask you to press random keys when connecting a new keyboard?
> Source: Hacker_News
Execute Primary Source
// Discussion Topic
USB HIDプロトコルにおけるキーボードレイアウト識別情報の欠如と、OSが物理的なキー入力を通じてスキャンコードと文字コードのマッピングを特定するメカニズム、およびその設計思想。
// Community Consensus
Macの挙動は「ランダム」ではなく、レイアウトを特定するための「意図的な識別プロセス」である。Windows等のOSがセットアップ時にロケールを決定するのに対し、Macは接続時に実測を行うことで、設定ミスによる不整合を回避する実用的なアプローチを取っている。ただし、これはUSBプロトコルがレイアウト情報を送れないという技術的負債を、ユーザーの操作によって肩代わりさせている状態であるとの認識で一致している。
// Alternative Solutions
USB HIDプロトコル自体にレイアウト識別機能を持たせる、あるいは物理的なキーコードではなく、高レベルなUnicode文字やモディファイアを直接送信するプロトコルへの移行。
// Technical Terms
Senior Engineer Insight
> 本件は、標準規格の不完全さをアプリケーション層のUXでいかに吸収するかという、極めて実践的な設計判断の事例である。プロトコルレベルでの解決(HIDの拡張)は互換性の壁が高く、OSセットアップ時の設定に依存する手法は、後付けのデバイス接続においてエラーを誘発しやすい。Macの「キャリブレーション方式」は、スケーラビリティやプロトコルの美しさには欠けるが、現場での「動かない」という致命的な不満を最小化する、極めて合理的な妥協点であると言える。ただし、これをセキュリティ(BadUSB対策)に転用する場合、入力の自動化を防ぐためのさらなる制約が必要となり、実装コストは跳ね上がるだろう。