Way per accendere la tastiera luce caps-lock senza realmente accendere caps-lock?
-
20-09-2019 - |
Domanda
Sto scrivendo un programma che utilizza caps-lock, come un interruttore a levetta. Sarebbe bello per impostare il LED del tasto per dimostrare che il mio programma è acceso o spento, come il tasto capslock fa naturalmente.
Lo so che ho potuto solo SendInput('Capslock');
o qualsiasi altra cosa per trasformare in realtà caps-lock on e off. Ma la mia app è un programma di battitura a macchina, e io non voglio avere a che fare con la traduzione dei tasti di tutto in maiuscolo che accenderlo mi avrebbe dato nelle loro lettere maiuscole inferiori /. Potrei seguire questa strada alla fine, ma non per questa versione.
Vorrei però essere interessato solo accendere la luce LED SENZA in realtà accendendo caps-lock. Esiste un modo per farlo?
Grazie.
Soluzione
È possibile trovare il codice per modificare gli indicatori sulla tastiera da C # a Faking bloc num, blocco maiuscole e scorrere led serratura
Altri suggerimenti
Sono abbastanza sicuro che non è possibile attivare o disattivare il LED, senza alternare il blocco delle maiuscole reale, a meno che non si stesse scrivendo un driver di tastiera. (Non sto raccomandando che!)
Ci sono plug-in per Miranda IM denominato " tastiera Notifica Ext. ", che contiene nella sua attuazione C codice sorgente di led di controllo. Vedere file tastiera.e in origine. Probabilmente si può portarlo a C #.
Qui ci sono punti salienti più interessanti dal codice sorgente:
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);