実際にはキャップロックをオンにすることなく、キーボードキャップロックライトをオンにする方法はありますか?
-
20-09-2019 - |
質問
私は、トグルスイッチとしてキャップロックを使用するプログラムを書いています。これは、CapsLockキーのキーは当然ないように私のプログラムは、オンまたはオフであることを示すために、キーのLEDを設定するとよいでしょう。
私はちょうどSendInput('Capslock');
ことができることや、実際にオンとオフのキャップロックをオンにするものは何でも知っています。しかし、私のアプリはタイピングプログラムである、と私はそれをオンにすると、その上位/下位ケースに私を与えるすべて大文字のキーを翻訳に対処する必要がありますする必要はありません。私は、このバージョンのために最終的にそのルートを行く、しかしいない可能性があります。
しかし私はちょうど、<私> WITHOUT には、実際にキャップロックをオンにするLEDライトをオンに興味があると思います。それをする方法はありますか?
ありがとうございます。
解決
あなたは<のhref = "http://www.aboutmycode.com/miscellaneous/faking-num-lock-caps-lock-and-scroll-lock-ledsでのC#からキーボードのインジケータを変更するためのコードを見つけることができます/」のrel = "nofollowを">偽造NUMロック、キャップはロックとロックのLEDをスクロールする
他のヒント
私はあなたがキーボードドライバを書いていた場合を除き、実際のキャップは、ロックトグルせずにLEDを切り替えることができないかなり確信しています。 (私はそれを推薦ないよ!)
ここでは、ソースコードから最も興味深いのハイライトは次のとおりです:
mir_snprintf(aux1, sizeof(aux1), "Kbd%d", i);
mir_snprintf(aux2, sizeof(aux2), "\\Device\\KeyboardClass%d", i);
DefineDosDevice(DDD_RAW_TARGET_PATH, aux1, aux2);
mir_snprintf(aux1, sizeof(aux1), "\\\\.\\Kbd%d", i);
hKbdDev[i] = CreateFile(aux1, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
...
result |= DeviceIoControl(hKbdDev[i], IOCTL_KEYBOARD_SET_INDICATORS, &InputBuffer, DataLength, NULL, 0, &ReturnedLength, NULL);
所属していません StackOverflow