Pergunta

Estou escrevendo um programa que usa o Caps-Lock como um interruptor de alternância. Seria bom definir o LED da chave para mostrar que meu programa está ligado ou desativado, como a tecla Capslock faz naturalmente.

Eu sei que eu poderia apenas SendInput('Capslock'); Ou o que quer que seja realmente ligar e desligar os capitões. Mas meu aplicativo é um programa de digitação, e eu não quero lidar com a tradução das teclas de todas as capas em que ativá-lo me dariam em seus casos inferiores/superiores. Eu posso seguir esse caminho eventualmente, mas não para esta versão.

No entanto, eu estaria interessado em apenas ligar a luz LED SEM Na verdade, ligando o Caps-Lock. Existe alguma maneira de fazer isso?

Obrigada.

Foi útil?

Solução

Você pode encontrar código para alterar indicadores no teclado de C# em Faking Num Lock, Caps Lock e LEDs de trava de rolagem

Outras dicas

Tenho certeza de que você não pode alternar o LED sem alternar o bloqueio do Caps real, a menos que você estivesse escrevendo um driver de teclado. (Não estou recomendando isso!)

Existem plug -in para Miranda IM nomeado "Teclado notificar ext."que contém em sua implementação do código -fonte C dos LEDs de controle. Consulte o teclado do arquivo.c na fonte. Provavelmente você pode portar para C#.

Aqui estão os destaques mais interessantes do código -fonte:

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top