мой любимый мыш =)

Решение проблем связванных с работой железа. Проблемы программно-аппаратной совместимости.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-06-29 0:38:59

на каждую мышь по демону.
когда две фтыкаешь - два демона на разные девайсы.
и всё работает - две мыши сразу =))
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: мой любимый мыш =)

Непрочитанное сообщение paradox » 2008-06-29 0:41:40

две мыши два указателя???? или одни указатель мыши на две реальные
так это и без такой мозг$$$$$ можно было сделать
нафига moused
капец(

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-06-29 0:43:26

две мыши, но - указатель один.
двигать им можно любой.
======
у тя чё - мыши усбовой нет?
вот тачпад заведи и мышь одновременно - у тя будет и то и другое и два моузеда
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: мой любимый мыш =)

Непрочитанное сообщение paradox » 2008-06-29 0:46:40

мыши нет
мне тачпада хватет

ну если указатель один
тогда вообще бред
с надобностью moused


ладно в а линухе есть демон?
или там все таки умом дошли что можно и без него

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-06-29 8:02:00

ненавижу тачпад...
========
а как без демона? кто курсор отслеживать будет?
Убей их всех! Бог потом рассортирует...

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-06-30 17:22:32

ну в ibm есть несовсем тачпад а типа джойстика = )))
очень удобная штука
потом к мышке такое отвращение


ну идея в том что нафиг нужно демон
если можно заставить ядро об этом заботиться
я понимаю что юникс это технология ручного труда
чем больше нужно ручками делать тем больше это юних =)
но для новичков
и вообще это как то ненужно (демон)

лан
а кто мне обьяснит что такое EFI на amd64
как оно выглядит
и что из себя представляет?

что то типа BIOS как для i386?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-06-30 19:35:40

если скажешь где искать - скажу как выглядит...
БИОС там такой же, по крайней мере на вид.
Убей их всех! Бог потом рассортирует...

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-06-30 20:00:03

что б я так знал +))
я сам хотел поинтересоваться

судя с соурсов
это толи BIOS так называеться
толи какая то часть биоса
наскоко я понял токо в amd64
в i386 чет такого помоему нет

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-06-30 20:43:07

нашел что то
читаю

Код: Выделить всё

http://ru.wikipedia.org/wiki/Extensible_Firmware_Interface

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-11 16:14:05

нашел баг в HID парсере под bsd
поидеи он во всех bsd системах
и подобные мыши небудут работать во всех

как пофиксить пока в размышлениях

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-07-11 17:45:33

огласи плиз... может кому пригодиться, а то не надумаешь и тема упадёт...
и забудут все.
======
в понедельник симу с того бука с которого платка WiFi антенну - с хозяином договорился.
может сразу же и отправлю.
Убей их всех! Бог потом рассортирует...

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-11 17:59:00

придумаю...

дамп с мишиного HID

Код: Выделить всё

[report desc size=79]
USAGE PAGE Consumer(0xc)
USAGE Consumer Control(0x1)[Consumer(0xc)]
COLLECTION Application(1)
  REPORT ID 1
  USAGE MINIMUM Unassigned(0)
  USAGE MAXIMUM AC Underline(576)
  LOGICAL MINIMUM 0
  LOGICAL MAXIMUM 576
  REPORT SIZE 16
  REPORT COUNT 1
  INPUT ( Data Array Absolute ) (0)
END COLLECTION
USAGE PAGE Generic Desktop(0x1)
USAGE Mouse(0x2)[Generic Desktop(0x1)]
COLLECTION Application(1)
  REPORT ID 2
  USAGE Pointer(0x1)[Generic Desktop(0x1)]
  COLLECTION Physical(0)
    USAGE PAGE Button(0x9)
    USAGE MINIMUM Button1(1)
    USAGE MAXIMUM Button3(3)
    LOGICAL MINIMUM 0
    LOGICAL MAXIMUM 1
    REPORT SIZE 1
    REPORT COUNT 3
    INPUT ( Data Variable Absolute ) (2)
    REPORT SIZE 5
    REPORT COUNT 1
    INPUT ( Const Array Absolute ) (1)
    USAGE PAGE Generic Desktop(0x1)
    USAGE X(0x30)[Generic Desktop(0x1)]
    USAGE Y(0x31)[Generic Desktop(0x1)]
    USAGE Wheel(0x38)[Generic Desktop(0x1)]
    LOGICAL MINIMUM -127
    LOGICAL MAXIMUM 127
    REPORT SIZE 8
    REPORT COUNT 3
    INPUT ( Data Variable Relative ) (6)
  END COLLECTION
END COLLECTION
[hexdump]
0000 05 0C 09 01 A1 01 85 01 19 00 2A 40 02 15 00 26
0010 40 02 75 10 95 01 81 00 C0 05 01 09 02 A1 01 85
0020 02 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 75
0030 01 95 03 81 02 75 05 95 01 81 01 05 01 09 30 09
0040 31 09 38 15 81 25 7F 75 08 95 03 81 06 C0 C0

миш дает два описания протокола который идет от USB
первый похоже на то что идет согнализация толи о уровне зарядки толи о уровне сигнала
второй и который идет от мыши

Код: Выделить всё

USAGE PAGE Consumer(0xc)
USAGE Consumer Control(0x1)[Consumer(0xc)]
COLLECTION Application(1)
  REPORT ID 1


USAGE PAGE Generic Desktop(0x1)
USAGE Mouse(0x2)[Generic Desktop(0x1)]
COLLECTION Application(1)
  REPORT ID 2


так вот bsd hid parser
неумеет обрабытвать такие запросы
он считает что в HID протокол может быть токо один

и в данном случае он пытаеться работать с твоей мишей по первому протоколу
у которого количество байтов 3

а нужно пропустить 25 байтов HID дампа и сделать парсиг на них
и тогда все распознаеться автоматически
и что iid = 2 и что количество байтов size = 5
итд

грубо говоря

если по твоему сделать
сделать

Код: Выделить всё

                       device_get_nameunit(sc->sc_dev));
                return ENXIO;
        }

        err = usbd_read_report_desc(uaa->iface, &desc, &size, M_TEMP);
        if (err)
                return ENXIO;

+    if (uaa->vendor == 0x046e &&
+        uaa->product == 0x52e6) {
+ 
+       desc += 25;
+       size -= 25;
+      }

        if (!hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X),
то все распознаеться само

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-07-11 18:00:54

ха. новый мегапатч который короче и прощще второго? =)
Убей их всех! Бог потом рассортирует...

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-11 18:07:20

ну типа да

токо там desc нужно привести к правильному типу
а то он void

но смыл не в этом
а том что бы оно правильно находило описание протокола...
а надо сказать и в иксах тот же hid анализер
но он токо для bsd
под линух они его не юзают
так что это проблема токо bsd

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-11 20:11:41

пофиксил
когда проверишь скажешь
отпишу баг репорт
но
сделай те мне все у кого есть usb миши
дампы
да бы проверить свои мысли

ну еще добавлю что ucycom.c больше не будет работать
надо искать его автора
пусть пофиксит
поскольку для этого девайса я незнаю какая коллекция

Код: Выделить всё

diff -urN usb.orig/hid.c usb.new/hid.c
--- usb.orig/hid.c	2008-03-03 03:14:47.000000000 +0200
+++ usb.new/hid.c	2008-07-11 19:54:27.000000000 +0300
@@ -72,6 +72,7 @@
 	int multi;
 	int multimax;
 	int kindset;
+	int usage;
 };
 
 static void
@@ -115,7 +116,7 @@
 }
 
 int
-hid_get_item(struct hid_data *s, struct hid_item *h)
+hid_get_item(struct hid_data *s, u_int32_t u, struct hid_item *h)
 {
 	struct hid_item *c = &s->cur;
 	unsigned int bTag, bType, bSize;
@@ -193,6 +194,10 @@
 		case 0:			/* Main */
 			switch (bTag) {
 			case 8:		/* Input */
+
+				if (s->usage != u >>16)
+					break;
+
 				if (!(s->kindset & (1 << hid_input)))
 					continue;
 				c->kind = hid_input;
@@ -232,6 +237,8 @@
 				c->kind = hid_collection;
 				c->collection = dval;
 				c->collevel++;
+				if (c->collevel > 0)
+					s->usage = c->_usage_page >> 16;
 				*h = *c;
 				hid_clear_local(c);
 				s->nu = 0;
@@ -364,7 +371,7 @@
 }
 
 int
-hid_report_size(void *buf, int len, enum hid_kind k, u_int8_t *idp)
+hid_report_size(void *buf, int len, u_int32_t u, enum hid_kind k, u_int8_t *idp)
 {
 	struct hid_data *d;
 	struct hid_item h;
@@ -372,7 +379,7 @@
 
 	id = 0;
 	hi = lo = -1;
-	for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); )
+	for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, u, &h); )
 		if (h.kind == k) {
 			if (h.report_ID != 0 && !id)
 				id = h.report_ID;
@@ -399,7 +406,7 @@
 	struct hid_data *d;
 	struct hid_item h;
 
-	for (d = hid_start_parse(desc, size, 1<<k); hid_get_item(d, &h); ) {
+	for (d = hid_start_parse(desc, size, 1<<k); hid_get_item(d, u, &h); ) {
 		if (h.kind == k && !(h.flags & HIO_CONST) && h.usage == u) {
 			if (loc != NULL)
 				*loc = h.loc;
diff -urN usb.orig/hid.h usb.new/hid.h
--- usb.orig/hid.h	2005-01-19 17:51:03.000000000 +0200
+++ usb.new/hid.h	2008-07-11 19:35:09.000000000 +0300
@@ -82,8 +82,8 @@
 
 struct hid_data *hid_start_parse(void *d, int len, int kindset);
 void hid_end_parse(struct hid_data *s);
-int hid_get_item(struct hid_data *s, struct hid_item *h);
-int hid_report_size(void *buf, int len, enum hid_kind k, u_int8_t *id);
+int hid_get_item(struct hid_data *s, u_int32_t u, struct hid_item *h);
+int hid_report_size(void *buf, int len, u_int32_t u, enum hid_kind k, u_int8_t *id);
 int hid_locate(void *desc, int size, u_int32_t usage,
 		    enum hid_kind kind, struct hid_location *loc,
 		    u_int32_t *flags);
diff -urN usb.orig/ucycom.c usb.new/ucycom.c
--- usb.orig/ucycom.c	2008-03-03 03:18:12.000000000 +0200
+++ usb.new/ucycom.c	2008-07-11 20:00:13.000000000 +0300
@@ -221,9 +221,9 @@
 	}
 
 	/* get report sizes */
-	sc->sc_flen = hid_report_size(urd, urdlen, hid_feature, &sc->sc_fid);
-	sc->sc_ilen = hid_report_size(urd, urdlen, hid_input, &sc->sc_iid);
-	sc->sc_olen = hid_report_size(urd, urdlen, hid_output, &sc->sc_oid);
+	sc->sc_flen = hid_report_size(urd, urdlen, 0, hid_feature, &sc->sc_fid); /* NED TO BE FIXX ????? */
+	sc->sc_ilen = hid_report_size(urd, urdlen, 0, hid_input, &sc->sc_iid);	/* NEED TO BE FIXX ????? */
+	sc->sc_olen = hid_report_size(urd, urdlen, 0, hid_output, &sc->sc_oid);	/* NEED TO BE FIXX ????? */
 
 	if (sc->sc_ilen > UCYCOM_MAX_IOLEN || sc->sc_olen > UCYCOM_MAX_IOLEN) {
 		device_printf(dev, "I/O report size too big (%zu, %zu, %u)\n",
diff -urN usb.orig/ums.c usb.new/ums.c
--- usb.orig/ums.c	2008-04-30 22:37:54.000000000 +0300
+++ usb.new/ums.c	2008-07-11 19:56:20.000000000 +0300
@@ -358,7 +358,8 @@
 		hid_locate(desc, size, HID_USAGE2(HUP_BUTTON, i),
 				hid_input, &sc->sc_loc_btn[i-1], 0);
 
-	sc->sc_isize = hid_report_size(desc, size, hid_input, &sc->sc_iid);
+	sc->sc_isize = hid_report_size(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE),
+					hid_input, &sc->sc_iid);
 	sc->sc_ibuf = malloc(sc->sc_isize, M_USB, M_NOWAIT);
 	if (!sc->sc_ibuf) {
 		printf("%s: no memory\n", device_get_nameunit(sc->sc_dev));
@@ -393,6 +394,7 @@
 	 * descriptor), it seems that report id 17 contains the necessary
 	 * mouse information(3-buttons,X,Y,wheel) so we specify it manually.
 	 */
+	/* IS IT NESSESARY ??? NEED TO BE RECHECK !!!!!!! AND EXCLUDE */
 	if (uaa->vendor == USB_VENDOR_MICROSOFT &&
 	    uaa->product == USB_PRODUCT_MICROSOFT_WLNOTEBOOK3) {
 		sc->flags = UMS_Z;


Аватара пользователя
nsand
мл. сержант
Сообщения: 132
Зарегистрирован: 2008-03-08 15:25:07
Откуда: Россия, Пенза
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение nsand » 2008-07-11 20:40:50

Скачал исходники http://people.freebsd.org/~kaiw/tools/krepdump.tgz
распокавал, собрал

Код: Выделить всё

# make
# cd krepdump
# kldload ./krepdump.ko
вытащил мышь из usb разъема и опять вставил, посмотрел что в конце вывода dmesg появилось
мышь A4 tech battery free magnetic field - ну типа того.

Код: Выделить всё

# dmesg
ums0: at uhub5 port 1 (addr 2) disconnected
ums0: detached

[report desc size=64]
USAGE PAGE Generic Desktop(0x1)
USAGE Mouse(0x2)[Generic Desktop(0x1)]
COLLECTION Application(1)
  USAGE Pointer(0x1)[Generic Desktop(0x1)]
  COLLECTION Physical(0)
    USAGE PAGE Button(0x9)
    USAGE MINIMUM Button1(1)
    USAGE MAXIMUM Button8(8)
    LOGICAL MINIMUM 0
    LOGICAL MAXIMUM 1
    REPORT COUNT 8
    REPORT SIZE 1
    INPUT ( Data Variable Absolute ) (2)
    USAGE PAGE Generic Desktop(0x1)
    USAGE X(0x30)[Generic Desktop(0x1)]
    USAGE Y(0x31)[Generic Desktop(0x1)]
    LOGICAL MINIMUM -2047
    LOGICAL MAXIMUM 2047
    REPORT SIZE 12
    REPORT COUNT 2
    INPUT ( Data Variable Relative ) (6)
    USAGE Wheel(0x38)[Generic Desktop(0x1)]
    LOGICAL MINIMUM -127
    LOGICAL MAXIMUM 127
    USAGE Unknown Usage(0xb8)[Generic Desktop(0x1)]
    LOGICAL MINIMUM -128
    LOGICAL MAXIMUM 127
    REPORT SIZE 8
    REPORT COUNT 2
    INPUT ( Data Variable Relative ) (6)
  END COLLECTION
END COLLECTION
[hexdump]
0000 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 08
0010 15 00 25 01 95 08 75 01 81 02 05 01 09 30 09 31
0020 16 01 F8 26 FF 07 75 0C 95 02 81 06 09 38 15 81
0030 25 7F 09 B8 15 80 25 7F 75 08 95 02 81 06 C0 C0
ums0: <A4Tech Wireless Battery Free Optical Mouse, class 0/0, rev 2.00/0.01, add
r 2> on uhub5
ums0: 8 buttons and Z dir.

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-11 20:48:04

нормально
патч недолжен ничего поламать
как работала миша
так и должна дальше работать после них
ищем и ждем у кого супер модные миши
у которых несколько коллекций HID

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-07-11 22:11:14

тока в понедельник..
Убей их всех! Бог потом рассортирует...

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-12 13:00:31

поспешил = )))
кнопки не детектились
очередной патч
для 8 сюда
а все в архиве и под 7 и 8
paradox.org.ua/work/fixx.tar.bz2

Код: Выделить всё

diff -urN usb.orig/hid.c usb.new/hid.c
--- usb.orig/hid.c	2008-03-03 03:14:47.000000000 +0200
+++ usb.new/hid.c	2008-07-12 03:35:34.000000000 +0300
@@ -72,6 +72,7 @@
 	int multi;
 	int multimax;
 	int kindset;
+	int usage;
 };
 
 static void
@@ -115,7 +116,7 @@
 }
 
 int
-hid_get_item(struct hid_data *s, struct hid_item *h)
+hid_get_item(struct hid_data *s, u_int32_t u, struct hid_item *h)
 {
 	struct hid_item *c = &s->cur;
 	unsigned int bTag, bType, bSize;
@@ -193,6 +194,10 @@
 		case 0:			/* Main */
 			switch (bTag) {
 			case 8:		/* Input */
+
+				if (s->usage != u >>16)
+					break;
+
 				if (!(s->kindset & (1 << hid_input)))
 					continue;
 				c->kind = hid_input;
@@ -232,6 +237,8 @@
 				c->kind = hid_collection;
 				c->collection = dval;
 				c->collevel++;
+				if (c->collevel > 0 && u != 0)
+					s->usage = c->_usage_page >> 16;
 				*h = *c;
 				hid_clear_local(c);
 				s->nu = 0;
@@ -258,6 +265,8 @@
 			switch (bTag) {
 			case 0:
 				c->_usage_page = dval << 16;
+				if (u != 0 && u>>16 == dval)
+					s->usage = dval;
 				break;
 			case 1:
 				c->logical_minimum = dval;
@@ -364,7 +373,7 @@
 }
 
 int
-hid_report_size(void *buf, int len, enum hid_kind k, u_int8_t *idp)
+hid_report_size(void *buf, int len, u_int32_t u, enum hid_kind k, u_int8_t *idp)
 {
 	struct hid_data *d;
 	struct hid_item h;
@@ -372,7 +381,7 @@
 
 	id = 0;
 	hi = lo = -1;
-	for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); )
+	for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, u, &h); )
 		if (h.kind == k) {
 			if (h.report_ID != 0 && !id)
 				id = h.report_ID;
@@ -399,7 +408,7 @@
 	struct hid_data *d;
 	struct hid_item h;
 
-	for (d = hid_start_parse(desc, size, 1<<k); hid_get_item(d, &h); ) {
+	for (d = hid_start_parse(desc, size, 1<<k); hid_get_item(d, u, &h); ) {
 		if (h.kind == k && !(h.flags & HIO_CONST) && h.usage == u) {
 			if (loc != NULL)
 				*loc = h.loc;
@@ -452,7 +461,7 @@
 	if (hd == NULL)
 		return (0);
 
-	err = hid_get_item(hd, &hi) &&
+	err = hid_get_item(hd, usage, &hi) &&
 	    hi.kind == hid_collection &&
 	    hi.usage == usage;
 	hid_end_parse(hd);
diff -urN usb.orig/hid.h usb.new/hid.h
--- usb.orig/hid.h	2005-01-19 17:51:03.000000000 +0200
+++ usb.new/hid.h	2008-07-11 19:35:09.000000000 +0300
@@ -82,8 +82,8 @@
 
 struct hid_data *hid_start_parse(void *d, int len, int kindset);
 void hid_end_parse(struct hid_data *s);
-int hid_get_item(struct hid_data *s, struct hid_item *h);
-int hid_report_size(void *buf, int len, enum hid_kind k, u_int8_t *id);
+int hid_get_item(struct hid_data *s, u_int32_t u, struct hid_item *h);
+int hid_report_size(void *buf, int len, u_int32_t u, enum hid_kind k, u_int8_t *id);
 int hid_locate(void *desc, int size, u_int32_t usage,
 		    enum hid_kind kind, struct hid_location *loc,
 		    u_int32_t *flags);
diff -urN usb.orig/ucycom.c usb.new/ucycom.c
--- usb.orig/ucycom.c	2008-03-03 03:18:12.000000000 +0200
+++ usb.new/ucycom.c	2008-07-12 03:46:11.000000000 +0300
@@ -221,9 +221,9 @@
 	}
 
 	/* get report sizes */
-	sc->sc_flen = hid_report_size(urd, urdlen, hid_feature, &sc->sc_fid);
-	sc->sc_ilen = hid_report_size(urd, urdlen, hid_input, &sc->sc_iid);
-	sc->sc_olen = hid_report_size(urd, urdlen, hid_output, &sc->sc_oid);
+	sc->sc_flen = hid_report_size(urd, urdlen, 0, hid_feature, &sc->sc_fid); /* NEED TO BE FIXX ????? */
+	sc->sc_ilen = hid_report_size(urd, urdlen, 0, hid_input, &sc->sc_iid);	/* NEED TO BE FIXX ????? */
+	sc->sc_olen = hid_report_size(urd, urdlen, 0, hid_output, &sc->sc_oid);	/* NEED TO BE FIXX ????? */
 
 	if (sc->sc_ilen > UCYCOM_MAX_IOLEN || sc->sc_olen > UCYCOM_MAX_IOLEN) {
 		device_printf(dev, "I/O report size too big (%zu, %zu, %u)\n",
diff -urN usb.orig/uhid.c usb.new/uhid.c
--- usb.orig/uhid.c	2007-06-21 17:42:33.000000000 +0300
+++ usb.new/uhid.c	2008-07-12 02:17:26.000000000 +0300
@@ -320,9 +320,9 @@
 
 	(void)usbd_set_idle(iface, 0, 0);
 
-	sc->sc_isize = hid_report_size(desc, size, hid_input,   &sc->sc_iid);
-	sc->sc_osize = hid_report_size(desc, size, hid_output,  &sc->sc_oid);
-	sc->sc_fsize = hid_report_size(desc, size, hid_feature, &sc->sc_fid);
+	sc->sc_isize = hid_report_size(desc, size, 0, hid_input,   &sc->sc_iid);
+	sc->sc_osize = hid_report_size(desc, size, 0, hid_output,  &sc->sc_oid);
+	sc->sc_fsize = hid_report_size(desc, size, 0, hid_feature, &sc->sc_fid);
 
 	sc->sc_repdesc = desc;
 	sc->sc_repdesc_size = size;
diff -urN usb.orig/ums.c usb.new/ums.c
--- usb.orig/ums.c	2008-04-30 22:37:54.000000000 +0300
+++ usb.new/ums.c	2008-07-11 19:56:20.000000000 +0300
@@ -358,7 +358,8 @@
 		hid_locate(desc, size, HID_USAGE2(HUP_BUTTON, i),
 				hid_input, &sc->sc_loc_btn[i-1], 0);
 
-	sc->sc_isize = hid_report_size(desc, size, hid_input, &sc->sc_iid);
+	sc->sc_isize = hid_report_size(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE),
+					hid_input, &sc->sc_iid);
 	sc->sc_ibuf = malloc(sc->sc_isize, M_USB, M_NOWAIT);
 	if (!sc->sc_ibuf) {
 		printf("%s: no memory\n", device_get_nameunit(sc->sc_dev));
@@ -393,6 +394,7 @@
 	 * descriptor), it seems that report id 17 contains the necessary
 	 * mouse information(3-buttons,X,Y,wheel) so we specify it manually.
 	 */
+	/* IS IT NESSESARY ??? NEED TO BE RECHECK !!!!!!! AND EXCLUDE */
 	if (uaa->vendor == USB_VENDOR_MICROSOFT &&
 	    uaa->product == USB_PRODUCT_MICROSOFT_WLNOTEBOOK3) {
 		sc->flags = UMS_Z;

Аватара пользователя
nsand
мл. сержант
Сообщения: 132
Зарегистрирован: 2008-03-08 15:25:07
Откуда: Россия, Пенза
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение nsand » 2008-07-12 20:34:15

еще дамп одной мыши.

Код: Выделить всё

[report desc size=48]
USAGE PAGE Generic Desktop(0x1)
USAGE Mouse(0x2)[Generic Desktop(0x1)]
COLLECTION Application(1)
  USAGE Pointer(0x1)[Generic Desktop(0x1)]
  COLLECTION Physical(0)
    USAGE PAGE Button(0x9) 
    USAGE MINIMUM Button1(1)
    USAGE MAXIMUM Button8(8)
    LOGICAL MINIMUM 0
    LOGICAL MAXIMUM 1
    REPORT SIZE 1
    REPORT COUNT 8
    INPUT ( Data Variable Absolute ) (2)
    USAGE PAGE Generic Desktop(0x1)
    USAGE X(0x30)[Generic Desktop(0x1)]
    USAGE Y(0x31)[Generic Desktop(0x1)]
    USAGE Wheel(0x38)[Generic Desktop(0x1)] 
    USAGE Unknown Usage(0xb8)[Generic Desktop(0x1)]
    LOGICAL MINIMUM -127
    LOGICAL MAXIMUM 127
    REPORT SIZE 8
    REPORT COUNT 4
    INPUT ( Data Variable Relative ) (6)
  END COLLECTION
END COLLECTION
[hexdump]
0000 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 08
0010 15 00 25 01 75 01 95 08 81 02 05 01 09 30 09 31
0020 09 38 09 B8 15 81 25 7F 75 08 95 04 81 06 C0 C0
ums1: <A4Tech PS/2+USB Mouse, class 0/0, rev 1.10/0.02, addr 2> on uhub4
ums1: 8 buttons and Z dir.
2 колесика 5 кнопок - видимых )
Последний раз редактировалось nsand 2008-07-12 20:58:32, всего редактировалось 2 раза.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение zingel » 2008-07-12 20:35:39

используй тег - code
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-07-14 13:26:13

э... ядро целиком чтоли пересобирать?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-07-14 14:30:46

пашет.
двигается, кнопочки работают.
========
первый раз после ребута не работала клава.
второй, тоже не работала.
третий - сингл мод, отключение автозапуска иксов, выход - продолжение загрузки.
имею на логоне краш ядра.
четвёртая загрузка - всё удачно, но иксы руками - отключил в предыущий заход.
======
ребутаться ещё? =))
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: мой любимый мыш =)

Непрочитанное сообщение Alex Keda » 2008-07-14 14:33:46

снёс сорцы подчистую, ща ещё раз залью, наложу патч и проверю...
Убей их всех! Бог потом рассортирует...

paradox_
проходил мимо

Re: мой любимый мыш =)

Непрочитанное сообщение paradox_ » 2008-07-14 15:34:51

та до паника вообще не должно дойти...
там токо к ums касаеться
либо миш работае либо нет