Команды в порт клавиатуры.
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 6
- Зарегистрирован: 19 дек 2004, 16:08
- Откуда: Москва
Объясните, пожалуйста, как на паскале можно работать с клавиатурой. Вроде она имеет порты $60 и $64. И по идее введение в последний из них команд клавиатуре должно сказываться на ней. Например $ED должно обращаться к светодиодам. А следующий байт 0, 1 или 2 зажигать их. Но ничего не получаеться. Клавиатура вообще не реагирует на команды, вводимые в этот порт. Помогите разобраться.
Wormkeeper, ты все-таки определись, как хочешь работать с клавиатурой: на Паскале или через порты
Для второго случая у нас есть специальный форум, называется "Ассемблер"
Если серьезно, см. например http://newww.mycomputer.ua/text/4887;js ... DE157110F0
Имей в виду, что предполагается работа в реальном режиме (т.е. из-под DOS)

Если серьезно, см. например http://newww.mycomputer.ua/text/4887;js ... DE157110F0
Имей в виду, что предполагается работа в реальном режиме (т.е. из-под DOS)
-
- Сообщения: 6
- Зарегистрирован: 19 дек 2004, 16:08
- Откуда: Москва
Вообще то я имел в имду как раз на Паскале. Там вроде есть на это команды port[] и portw[]. Только с ними ничего не получаеться. А в ассемблере я пока не очень разбираюсь
на эту страничку я как-то раз выходил. Видно у меня паскаль другой версии. Может я что-то туплю. А из Паскаля точно нельзя?
port[] и portw[] - это не команды, а массивы для прямого доступа к портам. Можно, конечно, работать и через них. Есть еще стандартные функции KeyPressed, ReadKey (определены в Crt) для посимвольного чтения из буфера.
Ты ссылку-то посмотри, там как раз то, что тебе нужно.
Ты ссылку-то посмотри, там как раз то, что тебе нужно.
-
- Сообщения: 6
- Зарегистрирован: 19 дек 2004, 16:08
- Откуда: Москва
Спасибо огромное! Я кажеться понял, что у меня с компом(или с виндой) глюк. Я пробовал раньше писать на паскале - ноль результата. Сейчас попробовал прогу написать из указанного места. Сначала подумал, что опять не работает результата, а потом понял, что сотояние клавиатуры(caps lock, num lock, insert) перещёлкиваеться, только лампочкой это не отображаеться
. Хотя при нажатии кнопки лампочка загораеться.


прописываеш на паскале
var ncs_lock_status: byte absolute $40:$17;
4 bit - scroll lock
5 bit- num lock
6 bit- caps lock
и все возможные комбинации.
также можно читать отсюда инфу о состоянии клавиш (ctrl, alt, shift и выше упомянутых).
или так:
mem[$40:$17]:= 32; {загорится num lock, если ты не в винде}
Собственно.. Нужно, чтобы прога нажимала кнопку клавиатуры.
Делал через keybd_event - работает, но не везде.. Например, в графическом приложении да че там - в игре; d3d ноль эмоций на крутящиеся в цикле "нажатия".
Есть ли способ "пониже"?
кстати не хочу казаться неудачником умоляю кто-нибудь помогите как играть в ************* - это непонятная космическая браузерная стратегия, что на что давить, хочу захватить галактику только как как это сделать?
уж не ради ли этой ссылки весь пост? ссылку убил. ИА
Делал через keybd_event - работает, но не везде.. Например, в графическом приложении да че там - в игре; d3d ноль эмоций на крутящиеся в цикле "нажатия".
Есть ли способ "пониже"?
кстати не хочу казаться неудачником умоляю кто-нибудь помогите как играть в ************* - это непонятная космическая браузерная стратегия, что на что давить, хочу захватить галактику только как как это сделать?
уж не ради ли этой ссылки весь пост? ссылку убил. ИА