Way pour allumer la lumière de verrouillage bouchons clavier sans tourner réellement sur le verrouillage des majuscules?

StackOverflow https://stackoverflow.com/questions/2248358

Question

J'écris un programme qui utilise des bouchons de verrouillage comme un interrupteur à bascule. Il serait bon de régler la LED de la clé pour montrer que mon programme est activé ou non, comme la touche capslock fait naturellement.

Je sais que je pouvais SendInput('Capslock'); ou tout à fait tourner le verrouillage des majuscules et hors tension. Mais mon application est un programme de frappe, et je ne veux pas avoir à faire face à traduire les clés en majuscules que tournant sur me donner dans leurs minuscules / supérieur. Je pourrais aller dans cette voie par la suite, mais pas pour cette version.

Je voudrais cependant être intéressé par juste d'allumer la lumière LED SANS tourner réellement sur le verrouillage des majuscules. Est-il possible de le faire?

Merci.

Était-ce utile?

La solution

Vous pouvez trouver le code pour changer les indicateurs sur le clavier de C # à Simuler verrouillage numérique, verrouillage des majuscules et faites défiler voyants de verrouillage

Autres conseils

Je suis assez sûr que vous ne pouvez pas passer la LED sans basculer le verrouillage des majuscules réels, à moins que vous écrivez un pilote de clavier. (Je ne recommande pas ça!)

Il y a un plugin pour Miranda IM nommé « Clavier Notifier Ext. » qui contient dans sa mise en œuvre du code source C de contrôle LED. Voir le fichier keyboard.c dans la source. vous pouvez probablement le port à C #.

Voici les faits saillants les plus intéressants à partir du code source:

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top