Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб июн 24, 2017 4:46 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 59 сообщений ]  На страницу Пред. 1 2 3 4 След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт апр 05, 2007 10:06 am 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
Кстати о птичках!
У меня ядро давно(относительно) понимает третью кнопку мыши. Там оказалось все просто. В файле hid/m_ps2.inc (или как он там) нужно было всего лишь заменить
and [BTN_DWN],3
на
and [BTN_DWN],7
то есть не обнулять 3-й бит(который отвечает за 3-ю кнопку мыши).
Хотел прикрутить еще и скролл, но не все так просто оказалось как хотелось, не смог найти нормальные доки. В тех что указаны выше все классно описывается, но руки еще не добрались...
я вообще удивлен насчет 3-го бита, зачем его было принудительно занулять??? Конечно я незнаю как поведет себя 3-й бит при простой дву-кнопочной мышке, может в том была причина....


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 12:10 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
Дополнил драйвер ps/2 мыши.
Теперь при детекте определяется тип мыши (простая 3-х кнопочная, 3к со скролом или 5-кнопочная со скролом), пока такие.
Добавлены 37.7 (получить тип мыши, соответственно 0/1/2) и 37.8 получить данные скролла.
Как работает скролл. Используется общая переменная, которая хранит сумарное смещение (кол-во щелчков) скроллера с момента последнего прочтения. Значение доступно только активному окну, все остальные получают 0. Значение также обнуляется при потере фокуса (ввиду того что используется общая переменная).
Также теперь 37.2 возвращает 5 значимых бита.
http://ifolder.ru/1743781 взять можно тут. В архиве несжатое ядро и mouse.asm, который показывает тип вашей мышки, состояние кнопок и действие скроллинга.

минуса:
- ядро не пускает ланчера(по крайней мере у меня) был вязт вчерашний trunk. (это не мой бок)
- детект почему-то происходит с задержкой, там конечно добавился код но я не думал что он может такую задержку делать (использовались mouse_cmd и mouse_read, может в них дело).
- хотя это скорей всего бок моей мыши. Нет никаких проверок на переполнение, поэтому если очень быстро вращать скролл, то положительное смещение становится отрицательным, а отрицательное положительным. Было проверено в винде - тоже самое.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 12:22 pm 
k@sTIg@r
А ты уверен, что разные производители придерживаются одного стандарта?
Вернее стандарта как такового вообще нет. Не возникнет ли проблем с мышами других производителей?
Хотя теоретически первый скроллер более-менее стандартизирован и Винда его встроенными средствами поддерживает (проверял на шариковом COM Genius c одним скроллером).


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 12:40 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
Нет конечно. Кто может быть в этом уверен?
Во-первых, это касается только ps/2.
Кстати, возможен глюк с ком-мышами. А именно в плане 37.7, может вернуть чушь. Это легко подправить.
Во-вторых, это стандартный драйвер. Если у кого-то специфическая мышь, то придется использовать свой драйвер.
Кстати у меня была мысль не модифицировать файлы ядра а написать драйвер, который просто функции подменит. Но подумал, что сейчас практически у каждого, у кого ps/2 мыша, 3-кнопочная со скролом, а ядро предлагает только 2-х кнопочную. Так что. Но при желании, могу изменения вынести в отдельный драйвер. Не вижу в этом проблем.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 12:43 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
забыл - я ядро впринципе и выложил чтобы потеститли.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 1:00 pm 
k@sTIg@r
Цитата:
Но подумал, что сейчас практически у каждого, у кого ps/2 мыша, 3-кнопочная со скролом, а ядро предлагает только 2-х кнопочную.

Это известная фишка (не понимаю, почему ни у кого руки не дошли, в том числе и у меня), против этого возражений нет абсолютно никаких.
Проблема может возникнуть со скроллером, и потому название "стандартный драйвер" сильно притянуто за уши. :-)
Стандартным он будет не у всех и лучше действительно поддержку скроллеров выносить в отдельный драйвер, но это на будущее.
Сегодня вечером посмотрю то, что ты сделал. Правда отписать получится не раньше понедельника.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 1:15 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
Согласен. Прикинув я вижу что будут проблемы с 2-мя скролерами. Ядро конечно не рухнет, да и кнопки будут работать, а вот скрол врядли будет правильно работать.
Тогда вынесу в отдельный драйвер.
Хотя насчет 3-й кнопки. Есть объективное мнение, почему не была реализована 3-я кнопка? Есть проблемы с 2-кнопочными? или так, на всякий случай?


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 1:59 pm 
k@sTIg@r
Цитата:
Хотя насчет 3-й кнопки. Есть объективное мнение, почему не была реализована 3-я кнопка? Есть проблемы с 2-кнопочными? или так, на всякий случай?

Скорее всего, из-за отсутствия стандартной реализации 3 кнопки в COM мыши. При этом получается неравнозначность - на PS2 мышах есть кнопка, а на COM нету, а если на третью кнопку повесят достаточно важную функцию, то пользователь с COM мышью будет заведомо в ущемленном положении.
Я пытался написать реализацию для COM мышей третьей кнопки, но у меня в наличии была лишь мышь Genius с 3-я кнопками. А реализация протокола 3 кнопки у разных фирм разная.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пт апр 20, 2007 3:50 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
в некоторых системах, две нажатых кнопки (правая + левая) = нажатию средней кнопки, но тут может оказатся что комуто нужно одновременно нажимать кнопки )


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 21, 2007 12:02 am 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 690
Пользователь с COM мышью уже по определению ущемлён, причём самим собой. Лично я последний раз видел COM мышь, когда работал на старом добром 386DX.

_________________
in code we trust


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс апр 22, 2007 3:23 am 
Не в сети
Site Founder
Аватара пользователя

Зарегистрирован: Вс авг 08, 2004 8:55 am
Сообщения: 690
Проверил - работает. Задержки при определении не заметил, хотя и не старался. Лаунчер у меня запустился. Добавляй проверку на переполнение - и в транк.
В скором времени прикручу к Tinypad'у.

PS: Logitech RX300

_________________
in code we trust


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Вс апр 22, 2007 2:31 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт янв 27, 2006 3:06 pm
Сообщения: 1070
+1
Logitech M-BT58. Все работает корректно, ланчер запускается. Проверил в qemu, vmware и на реальной системе.


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 23, 2007 7:46 am 
k@sTIg@r
Проверил на реальной системе. Работает. Оба скроллера на моей мыши воспринимаются как один - видимо нужно учитывать какой-то дополнительный бит. Мышь A4-Tech WOP-35 (5 кнопок, 2 скроллера).
Только непонятно почему при прокрутке вверх число останавливается на 0? Получается дальше данные игнорируются.


Вернуться к началу
   
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 23, 2007 12:59 pm 
Не в сети

Зарегистрирован: Ср фев 21, 2007 3:03 pm
Сообщения: 188
Ленин
Ты не понял, проверка на переполнение отсутствует в железе. Для Z-indexa выделено только 4 бита, 1 знаковый 3 значимых. То есть можно успеть сделать восемь щелчков скрола, пока обрабатываются 4 пакета от мышки. Без понятия как это обойти. Но я проверил в виндах - тож самое. При интенсивной прокрутке страниц (firefox, pspad, остальные не пробовал) вниз, страница иногда проскакивает вверх. У меня тоже Logitech, видимо они забили на это на уровне железа, посчитали что не возможно переполнить эти 3 бита.
Ланчер запустился? хм..... тогда какого он у меня не пускается???
Ну если задержки не заметил, это хорошо.

Mario79
нет, данные не игнорируются. Это в моей программе стоит ограничение (спроси зачем - скажу не знаю). Посмотри в исходнике - увидишь, что к переменной прибавляется значение, возвращаемое ф-цией 37.8. Если результат меньше 0, то он обнуляется.
Да, со 2 скроллом проблемы. Дополнительных битов нет. Пытаюсь вникнуть - вот что описано в стандарте
Цитата:
There are mice with two scrolling wheels, one vertical and the other horizontal. These mice use the Microsoft Intellimouse data packet format as described above. If the vertical wheel is scrolled upward, the Z-counter is incremented by one and if that wheel is scrolled down, the Z-counter is decremented by one. This is normal operation for a scrolling wheel. However, if the horizontal wheel is scrolled right, the Z-counter is incremented by two and if it is scrolled left, the Z-counter is decremented by two. This seems like an odd way to implement the second scrolling wheel, but it works since the placement of the two wheels make it virtually impossible to use both of them at the same time (and if you try to trick the software and use both at the same time, it will ignore the horizontal wheel).

Тобишь, горизонтальный скролл инкрементит и декрементит 2 единицы. Тогда получается, что отсутствует совместимость, с односкроловыми мышами. И для нормальной работы придется делать отдельный драйвер. Жаль у меня нет такой мыши, потестил бы. Кста, если есть возможность попробуй поставить стандартный драйвер односкроловой мыши для винды и проверь как себя будет вести горизонтальный скролл.

И во вторых. Были тут обсуждения. Дополнительные режими вносить в ядро или все же в отдельный драйвер. Начал писать драйвер, но увидел как это сложно, слишком слабый интерфейс. Но все же можно....


Вернуться к началу
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 23, 2007 1:07 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3927
k@sTIg@r

Если есть вопросы по дровам пиши мне.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 59 сообщений ]  На страницу Пред. 1 2 3 4 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB