Просмотр полной версии : Mouse autodetect
ууу.. и действительно, память отшибла.
напомните плиз как грамотно заавтодетектить наличие/щтсутствие kempston mouse.
только это, я знаю, в ранних определялках глюк такой был- покуда мышой не дёрнешь, она не определится.
так вот мне бы правильный метод ^_~
CityAceE
04.02.2006, 17:02
Так ведь вроде нет способа достоверного определения мыши...
ну да, если движений не было, из всех портов читается FF, т.е. как установились счётчики при включении. я считаю, достаточно неплохой способ считать координаты X,Y и проверить, что они не равны
собственно, мне даже пришлось в коде эмулятора начальные значения координат мыши делать разные при включении, иначе половиной софта мышь не распознавалась
короче ясно что ничего не ясно ^_~
походу самая лучшая определялка- это
Press:
1. Mouse Enable
2. Mouse Disable
;)
походу самая лучшая определялка- это
Press:
1. Mouse Enable
2. Mouse Disable
да нет. по любому, мышь хоть чуть сдвинется после включения. ну разве что на неё не дышать...
ну разве что на неё не дышать...
Или она с шариком :)
по поводу: "она по любому сдвинеться".
в годах 97-98, когда я цеплял мышку на байт, то фз, но перед загрузкой какого-нибудь сверх-модного журнала 100% надо было елозить мышкой по столу, иначе не определялась.
CityAceE
05.02.2006, 04:50
походу самая лучшая определялка- это
Press:
1. Mouse Enable
2. Mouse Disable
Ещё лучше просить нажать левую кнопку мыши, ибо есть разные варианты схем по какому биту читается левая кнопка. А так сразу два зайца убиваем: определяем наличие мыши и положение левой кнопки.
Ещё лучше просить нажать левую кнопку мыши, ибо есть разные варианты схем по какому биту читается левая кнопка. А так сразу два зайца убиваем: определяем наличие мыши и положение левой кнопки.Ну типа как сделано во многом - первая нажатая и есть файр...
напомните плиз как грамотно заавтодетектить наличие/щтсутствие kempston mouse.
Никого не слушай, все врут.
НАЛИЧИЕ МЫШИ ОПРЕДЕЛИТЬ НЕВОЗМОЖНО!
Возможно определить только её отсутствие.
ну да, если движений не было, из всех портов читается FF, т.е. как установились счётчики при включении. я считаю, достаточно неплохой способ считать координаты X,Y и проверить, что они не равны
Убивать за такое. Ибо и FF -- это раз. И всякие левые часы вместо мышей и прочие программаторы -- два.
fk0 всех в газенваген хочет ?
Скажи тогда лучше нам глупым КАК ЖЕ РЕШИТЬ ПРОБЛЕМУ...
А мочить все могут... особенно в детстве :)
Скажи тогда лучше нам глупым КАК ЖЕ РЕШИТЬ ПРОБЛЕМУ...
Сказано же -- ОПРЕДЕЛИТЬ НАЛИЧИЕ МЫШИ НЕВОЗМОЖНО!
возможно только определить её отсутствие
факт отсутствия мыши определяется по хаотичным перемещениям
за разумный (0.1сек) период времени и нажиманию кнопок. Стоит на месте и кнопки не нажимаются -- мышь или есть или нет. В противном случае -- точно нет.
И всякие левые часы вместо мышей и прочие программаторы -- двану скажи, кто делал девайс на мышиных портах, причем порты на чтение x и y давали бы разные значения? можешь дать любую ссылку - в инете, на сообщение фидо, в спековских журналах. смогёшь?
Я делал достаточно надежный опрос наличия Kempston Mouse (и джойстик аналогично можно определять) так:
В цикле, который крутится примерно 5 прерываний (чем больше тем лучше), читаем порт кнопок мыши. Проверяем чтобы ни одна из 3-х кнопок не была нажата. Если мышка реальная, то это условие выполнится, если же из порта читается мусор, тогда мышки нет. Код:
LD HL,5000
LD BC,#FADF
DETECT IN A,(C)
CPL
AND 7
JR NZ,NO_MOUSE
DEC HL
LD A,H
OR L
JR NZ,DETECT
Если мышка реальная, то это условие выполнится, если же из порта читается мусор, тогда мышки нет.
Если мыши нет, то условие тоже может выполняться. Типичный случай: #FF везде.
Если мыши нет, то условие тоже может выполняться. Типичный случай: #FF везде.
Справедливое замечание. Но зачем вообще обычно определяют мышку в программе? Чтобы не завесить программу, которая постоянно отрабатывает ложные нажатия кнопок несуществующей мышки. То есть если мышки у пользователя нет, а из порта кнопок постоянно читается что кнопки не нажаты (#FF), то это нормальная ситуация и наша программа глючить не будет.
На компьютерах с шиной данных не подтянутой к +5В из портов каждый раз можно считать абсолютно непредсказуемое значение. Поэтому автоматически определить наличие мышы однозначно нельзя.
На компьютерах с шиной данных не подтянутой к +5В из портов каждый раз можно считать абсолютно непредсказуемое значение. Поэтому автоматически определить наличие мышы однозначно нельзя.
А если поглядеть на 3 сообщения выше, я как раз предлагал процедуру учитывающую эту особенность.
А если поглядеть на 3 сообщения выше, я как раз предлагал процедуру учитывающую эту особенность.
Да, этот фокус может сработать. Но ведь вместо мыши по данному порту может откликнутся и другое устройство с грубой дешифрацией, у которого может и не быть ситуации, когда три или два бита = 0.
А вот ещё вариант без автоопределения: попросить пользователя нажать, например, кнопку ОК в центре экрана. Если в течение 5 сек он её нажмёт - мыша есть.
Да, этот фокус может сработать. Но ведь вместо мыши по данному порту может откликнутся и другое устройство с грубой дешифрацией, у которого может и не быть ситуации, когда три или два бита = 0.
Устройство может "откликнуться" только как мышь с ненажатыми кнопками. Иначе проверку не пройдет. Если же прошло, ничем страшным нам это не грозит, кнопки то не нажаты.
А вот ещё вариант без автоопределения: попросить пользователя нажать, например, кнопку ОК в центре экрана. Если в течение 5 сек он её нажмёт - мыша есть.
Тема называется "autodetect mouse" :wink:
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot