xsea1
Acho que o local mais adequado para seu post seria no "Intel x86", uma vez que é referente ao PC e à cpu 8086 (x86).
Supondo que você está trabalhando com o extinto MSDOS (até a versão 6) ou seus equivalentes, você pode tentar usar as funcionalidades do KEYB.COM e carregar um KEYBOARD.SYS customizado por você (você teria que fazer um), tudo devidamente colocado no arquivo autoexec.bat. Sinseramente não faço idéia de como é esse KEYBOARD.SYS, mas provavelmente é o método mais fácil para fazer o que você quer.
No pior caso, você pode fazer um driver de teclado seu customizado, tudo do zero também.
Para começar a estudar:
http://www.assembly.happycodings.com/code9.html
Eu faria assim:
->Criaria um programa tipo TSR (Terminate and stay resident).
->Colocaria ele no autoexec.bat ou chamaria ele para "detonar" o teclado.
Como seria esse TSR:
-> ele teria as rotinas em c ou assembly para tratar o presssionamento e a liberação de teclas do teclado como peças básicas.
-> Escreveria uma rotina em c ou assembly para substituir a função da int9 (irq1 que é a irq do teclado) e a int16 (serviços da bios para teclado).
-> de posse do "endereço" dessas rotinas, eu chamaria o serviço do dos (int21) pedindo para substituir os handlers de interrupções desejados pelas rotinas criadas.
-> chamaria os serviços do DOS de novo para terminar e manter residente o programa.
A IRQ1 é chamada pelo hw toda vez que ocorre um evento no teclado, quer seja de liberação ou pressionamento de uma tecla (qualquer tecla).
A INT16 é chamada pelo dos e determinados aplicativos para ler informações do teclado ou escrever as config tipo capslook ativado/desativado...
Será preciso também construir o "mapa" das teclas do teclado, para que você possa mapeá-las corretamente.
Os parâmetros para as ints são passados através dos registradores AX, Bx, Cx, DX e talvez DS e/ou ES também.
O DOS fornece "serviços" pela INT21, onde o serviço é escolhido pelo valor do registrador AH, parâmetros adicionais em AL e talves demais registradores.
Consulte:
http://www.o3one.org/hwdocs/bios_doc/dosref22.html
Não é uma tarefa tão trivial, boa sorte.