2

caps-lock をトグル スイッチとして使用するプログラムを作成しています。capslock キーが自然に行うように、キーの LED を設定して、プログラムがオンまたはオフであることを示すとよいでしょう。

SendInput('Capslock');Caps-Lock のオンとオフを実際に切り替えることができることはわかっています。しかし、私のアプリはタイピング プログラムであり、それをオンにすると小文字/大文字に変換されるすべて大文字のキーを変換する必要はありません。最終的にはそのルートに行くかもしれませんが、このバージョンではそうではありません.

ただし、実際にCaps -Lockをオンにせずに、LEDライトをオンにすることに興味があります。それを行う方法はありますか?

ありがとうございました。

4

2 に答える 2

2

キーボードドライバーを作成していない限り、実際のCapsロックを切り替えずにLEDを切り替えることはできないと確信しています。(私はそれをお勧めしません!)

于 2010-02-11T23:09:45.710 に答える
2

「 Keyboard Notify Ext. 」という名前の Miranda IM 用のプラグインがあり、そのソース コードには LED を制御する C 実装が含まれています。ソースのファイル keyboard.c を参照してください。おそらくC#に移植できます。

ソースコードからの最も興味深いハイライトは次のとおりです。

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);
于 2010-03-22T13:59:36.247 に答える