BIOSパスワードを作成しました。私はDvořákキーボードレイアウトを使用します。キーボードレイアウトをQwertyに切り替えて再起動し、別のレイアウトを使用してパスワードを入力しても何も変わりません。ただし、オペレーティングシステムにログインするときに別のキーボードレイアウトを使用することが重要です。ここで何が起こっているのでしょうか?
答え1
多くの人がコンピュータを単一のオブジェクトとして考えているので、混乱しています。実際、コンピュータは複数のシステムが一緒に動作し、単一の凝集力のあるオブジェクトであるかのように勘違いします。
複数のサブシステム
BIOSはそのようなサブシステムの1つです。 BIOSは名前が言うものと正確に一致します。基本的な入出力システム。その使命は、周辺機器(HDD、キーボード、モニタなど)を検出できるように、システムに基本的な機能を提供することです。 BIOSが提供するもう1つの主な機能は、指定されたメディア(CD、DVD、USB、HDDなど)からオペレーティングシステムをロードするために起動することです。
これらの周辺機器へのアクセスを提供する機能は、必要に応じてオペレーティングシステムとソフトウェアで利用可能なAPIを提供しますが、オペレーティングシステムとソフトウェアはこれらのAPIを使用する必要はなく、これらのAPIが利用可能であるため使用する必要はありません。たくさんあります。複数の用途に。理由。
主な理由は、デバイスメーカーが通常のBIOSよりも親密な方法でハードウェアを処理できる低レベルドライバを最もよく知っており、しばしば独自に提供するためです。
これがまさにあなたの問題の場合です。 BIOSはキーボードを検出して独自のソフトウェア/ドライバとして扱うことができますが、オペレーティングシステムはそうではありません。
実際、これよりも重要なことはありません。
MS-DOS API
より具体的な例が必要な場合は、MS-DOSで人気のあるInterrupt 21の機能を見てください。 MS-DOSは、BIOSと共に独自のスクリーンサービスを提供しました。マイクロソフトは、より豊富な機能やまったく異なるAPIが欲しかったからです。
ウィキペディアページをご覧ください。オペレーティングシステムインタフェース。
答え2
最新のBIOSは検出されたUSBキーボードを持ち、いくつかのSMMトリックを実行して、BIOSとキーボードI / O用のBIOSを使用するすべてのプログラム(MS-DOS、Memtest86 +、およびいくつかのブートローダなど)の間で動作するようにします。
この既存のインターフェースは、キーを押してから離すとスキャンコードをPCに送信します。スキャンコードはキーの位置によって異なり、キーボードのqwerty / dvorakスイッチがどこにあるかはわかりません。 ASCIIまたはUnicodeポイントと整列しません。
これスキャンコードに関するウィキペディア記事いくつかの洞察を提供できます。
すべてではありませんが、ほとんどのBIOSは実際のAT、PS / 2キーボード、またはPS / 2エミュレートされたUSBキーボードから来るこれらのスキャンコードを理解する必要があります。追加キー、スイッチなどには追加または非標準スキャンコードがあり、BIOSはそれを無視します。
オペレーティングシステムにログインすると、ドライバーがコントロールを取得する機会があります。このインターフェイスがどのように機能するのか、どのドライバが関連しているのか正確にはわかりません(スイッチが標準でないスキャンコードで、ドライバがそれを選択してキーマップを変更したり、何か... USBキーボードの場合)。おそらく)qwerty / dvorakスイッチは別のHID入力デバイスでもあります。