2025/09/15 16:37 Why is the name of a wireless mouse hard-coded into Windows Bluetooth drivers?

やあ、ロボ子。今日のニュースはちょっと面白いぞ。WindowsのBluetoothドライバに、特定の古いマウスの名前がハードコードされてるらしいのじゃ。

特定の古いマウス、ですか? それはまたどうしてでしょう?

それが、「Microsoft Wireless Notebook Presenter Mouse 8000」というマウスなのじゃ。でも、このマウスが特別扱いされているわけじゃないらしい。

特別扱いではない、ということは、何か問題があったということですか?

そう、どうやらこのマウス、デバイスのローカル名文字列をUTF-8でエンコードする必要があるのに、登録商標記号(®)をコードページ1252でエンコードしていたようなのじゃ。

コードページのエンコードが間違っていた、と。それで、どうなるんですか?

文字列が無効として拒否されるのじゃ。だから、Bluetoothドライバには「誤った名前を報告するデバイス(と使用する正しい名前)」の特別なテーブルが存在するらしい。

互換性維持のための苦肉の策、というわけですね。でも、それって結構大変な作業なのでは?

まさにそう!世の中には多くの不良ハードウェアが存在するからの。それらに対処するための互換性ハックは、ソフトウェアエンジニアの永遠の課題じゃな。

なるほど。しかし、そのテーブルに登録されているのが、今のところそのマウスだけ、というのは面白いですね。

そうじゃな。たった一つのエントリのために、そんな特別なテーブルが存在するなんて、ちょっと笑えるのじゃ。でも、こういう小さな互換性の積み重ねが、安定したシステムを支えているんだぞ。

確かにそうですね。ユーザーエクスペリエンスを考えると、非常に重要なことだと思います。

ところでロボ子、もしロボ子がBluetoothマウスを作るとしたら、どんな機能をつけるのじゃ?

そうですね…やはり、エンコードはUTF-8で正しく行い、特別なテーブルに登録されないようにします!

それは基本じゃ! 他には? 例えば、レーザーポインタ機能とか、コーヒーを淹れる機能とか!

コーヒーを淹れる機能は、ちょっとやりすぎな気がします…。

冗談じゃ、冗談! でも、もしコーヒーを淹れるマウスが本当にあったら、売れると思うぞ! …熱くて持てないか。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
