статус клавиш num, caps и scroll lock
Модератор: Andy
Здравствуйте, уважаемые участники форума!
Подскажите, пожалуйста, как изменять статус клавиш num lock, caps lock и scroll lock
(ну и лампочки заодно).
Подскажите, пожалуйста, как изменять статус клавиш num lock, caps lock и scroll lock
(ну и лампочки заодно).
К сожалению не все понял изсказанного вами.
1. Какое отношение к программе будет иметь адрес 0040:0017
2. Что значит
?
Или нет?
1. Какое отношение к программе будет иметь адрес 0040:0017
2. Что значит
3.ждать ACK (FAh)
Это что-то вродепослать данные байт в 64h, три младших бита это скрол(0), нан(1), капс (2), 1-вкл, 0-выкл
Код: Выделить всё
mov ax,1b
out 64,ax ;scroll
mov ax,10b
out 64,ax ;num
mov ax,100b
out 64,ax ;caps
Или нет?
Код: Выделить всё
.model small
.stack 100h
.data
flag db 111b
.code
.startup
wait1:
; ожидание возможности посылки команды
in al,64h ; прочитать слово состояния
test al,10b ; бит 1 установлен?
jnz wait1; если нет ждем
mov al,0EDh
out 60h,al ; команда клавиатуры EDh
wait2:
; ожидание возможности посылки команды
in al,64h ; прочитать слово состояния
test al,10b ; бит 1 установлен?
jnz wait2; если нет ждем,
mov al,flag
out 60h,al ; новое состояние светодиодов
not flag
and flag,111b
mov ax,0700h ; ожидаем нажатие на клавишу
int 21h
cmp al,27;Esc
jne wait1
mov ax,4c00h
int 21h
end
airyashov, что-то прога ничего не делает...
Что значит
Что значит
?ожидание возможности посылки команды
Под чистый дос, под винду не пашет!
1 бит в 64h порте - проверка готовности клавы принять данные.
1 бит в 64h порте - проверка готовности клавы принять данные.
Вообще-то, как это ни может показаться невероятным, для "зажигания"/"тушения" клавиш достаточно изменить соответсвующие биты в в соответствующем байте в области данных BIOS (40h:17h)
Например, следующий код "тушит" NumLock:
Биты, сответсвующие клавишам:
Например, следующий код "тушит" NumLock:
Код: Выделить всё
.model tiny
.Code
Org 100h
Start:
Xor Ax,Ax
Mov Es,Ax
And byte ptr Es:[0417h],(not 20h)
Ret
End Start
Биты, сответсвующие клавишам:
Код: Выделить всё
Bit Val Meaning
7 $80 Insert on
6 $40 Caps Lock on
5 $20 Num Lock on
4 $10 Scroll Lock on
3 $08 <Alt> depressed
2 $04 <Ctrl> depressed
1 $02 <LeftShift> depressed
0 $01 <RightShift> depressed
Весело, Я всегда считал что они отражают состояние клавиш, но не управляют.
Я тоже когда-то так считал. Потом вдруг опытным путем ообнаружил, что и на смену значения бита клавиша (и "огонек") тоже реагируют.airyashov писал(а):Весело, Я всегда считал что они отражают состояние клавиш, но не управляют.
Возможно, эта "фигня" началась с AT-шек. Т.е., возможно, на XT такой фокус не проходил. Но наверняка уже не скажу. Дааавно здесь сидим (c)

Хм...
BBB, а ваш код тоже под винду не пашет?
А то созданная программа никак не влияет на индикаторы клавы.
BBB, а ваш код тоже под винду не пашет?
А то созданная программа никак не влияет на индикаторы клавы.
