INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2023-10-23 21:00 / 次へ→ / 最新へ⇒

■NumLockLockで、ノートPCにフルキーボードを接続したときだけNumLockをオンにしたい要望

2023年10月23日(月) 21:00:48



RSSRSS配信中
https://www.inasoft.org/



NumLockLockという、NumLock/CapsLock/ScrollLockの状態を固定化するソフトウェアを公開しているわけですが、先日、外部キーボードを接続した時だけNumLockをオン固定にすることはできないか?という要望がありました。

残念ながら、アプリケーションソフトウェアにとって、今叩かれているキーボードが外部キーボードなのか内部キーボード(?)なのかを区別する概念はありませんので、この要望そのものをダイレクトに実現する方法は、おそらくありません。

ただ、接続機器の名称等の固有情報を取得して、固有情報をキーに、NumLockキーの固定化状態を変化させるというのならどうか?ということになりました。

似たような話として、プリンタドライバのインストーラーが、USB接続されたプリンタを判別して動き始める事例を見たことがありましたので、もしかすると似たようなことができるかも(もしかしたら管理者権限が要求されるかも?)と思うようになりました。

ググってみたところ、GetRawInputDeviceList APIやGetRawInputDeviceInfo APIを利用して、接続されているHIDの情報を取得する方法が紹介されていまして、ご丁寧にキーボードの場合の判別方法や、デバイス名の取得方法が解説されていました。

この情報なら使えそう。

色々試してみたところ、USBキーボードの場合、どのUSBポートに接続するかでデバイス名が微妙に変わることがあるようでしたが、不変な部分もあるようだったため、不変な部分を利用してデバイス名として取り扱い、そのデバイス名のデバイスがあるのかないのかで、接続/非接続を判別し、NumLockの固定化状態を変えるようにすることを考えました。

せっかくなので、テンキーだけのキーボードを購入しまして、挿したり抜いたりしてみることにします。


非接続の状態。NumLockLockに、接続中のキーボードのデバイスをリストアップ機能を付けたので見てみると、標準で使用しているキーボードだけが見えています。


このキーボードを接続してみます。


新しいデバイスが追加されたことが見えました。


こんな感じで抜いたり挿したりしたときに、新しく追加されたことが見えたキーボードの名前を登録できるようにし(ダイアログ上の「▼」ボタンを押す)、この名前のデバイスが見つかったら、NumLock固定化の動作を変えるようにしてみました。


ついでに、非接続の状態になったら、NumLock固定化の動作を逆にすることにより、キーボードを挿したり抜いたりするたびに、NumLockLockによりNumLockのON/OFFが切り替わるようになりました。

とりあえず、今のところ、自分の環境と、要望をくれた方の環境でしか試せていないため、しばらくβ版として公開し、動作確認を続けたいと思います。


普通のUSBキーボード、テンキーだけのキーボード、英語(US)キーボード、Bluetooth接続のキーボード等、色々と繋いでみました。どうやら、全部個別のIDが振られているみたいですね。


おそらくVIDはVender ID(ベンダーID)。PIDはProduct ID(ベンダー内の製品ID)でしょう。



目次 | ←前へ / 2023-10-23 21:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3212232 (+0143)[+0218]

Copyright© 2010-2024 INASOFT