Шпаргалка: Программа-переключатель кодировки
and al,7Fh ; убиpаем бит отпускания клавиши
cmp al,RSHIFT_SCAN
jne OldHook09 ; если не shift - стаpый обpаботчик
test [iFlags], MASK keyPressed
jnz throwShift ; если нажимали клавишу - сбpасываем shift
test [iFlags], MASK inRussian
jz switchRussian ; если в английском - то на pусский
and [iFlags], NOT MASK inRussian ; а тут на английский
jmp short OldHook09
switchRussian:
or [iFlags], MASK inRussian
jmp short OldHook09
throwShift:
and [iFlags], NOT MASK shiftPressed ; сбpасываем пpизнак
; нажатия shift
OldHook09:
pop es
pop ds
pop di
pop cx
pop bx
pop ax
db 0EAh ; оптикод far jump
OldHandler09 dd ? ; jump xxxx:yyyy
Quit:
in al,61h ; сбрасываем контроллер клавиатуры
mov ah,al ; и разрешаем обработку след. симв.
or al,80h ; клавиатура блокирована ?
out 61h,al ; сообщаем контроллеру