Страница 7 из 11

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

Добавлено: 2008-06-29 0:38:59
Alex Keda
на каждую мышь по демону.
когда две фтыкаешь - два демона на разные девайсы.
и всё работает - две мыши сразу =))

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

Добавлено: 2008-06-29 0:41:40
paradox
две мыши два указателя???? или одни указатель мыши на две реальные
так это и без такой мозг$$$$$ можно было сделать
нафига moused
капец(

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

Добавлено: 2008-06-29 0:43:26
Alex Keda
две мыши, но - указатель один.
двигать им можно любой.
======
у тя чё - мыши усбовой нет?
вот тачпад заведи и мышь одновременно - у тя будет и то и другое и два моузеда

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

Добавлено: 2008-06-29 0:46:40
paradox
мыши нет
мне тачпада хватет

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


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

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

Добавлено: 2008-06-29 8:02:00
Alex Keda
ненавижу тачпад...
========
а как без демона? кто курсор отслеживать будет?

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

Добавлено: 2008-06-30 17:22:32
paradox_
ну в ibm есть несовсем тачпад а типа джойстика = )))
очень удобная штука
потом к мышке такое отвращение


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

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

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

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

Добавлено: 2008-06-30 19:35:40
Alex Keda
если скажешь где искать - скажу как выглядит...
БИОС там такой же, по крайней мере на вид.

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

Добавлено: 2008-06-30 20:00:03
paradox_
что б я так знал +))
я сам хотел поинтересоваться

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

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

Добавлено: 2008-06-30 20:43:07
paradox_
нашел что то
читаю

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

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

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

Добавлено: 2008-07-11 16:14:05
paradox_
нашел баг в HID парсере под bsd
поидеи он во всех bsd системах
и подобные мыши небудут работать во всех

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

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

Добавлено: 2008-07-11 17:45:33
Alex Keda
огласи плиз... может кому пригодиться, а то не надумаешь и тема упадёт...
и забудут все.
======
в понедельник симу с того бука с которого платка WiFi антенну - с хозяином договорился.
может сразу же и отправлю.

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

Добавлено: 2008-07-11 17:59:00
paradox_
придумаю...

дамп с мишиного 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),
то все распознаеться само

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

Добавлено: 2008-07-11 18:00:54
Alex Keda
ха. новый мегапатч который короче и прощще второго? =)

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

Добавлено: 2008-07-11 18:07:20
paradox_
ну типа да

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

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

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

Добавлено: 2008-07-11 20:11:41
paradox_
пофиксил
когда проверишь скажешь
отпишу баг репорт
но
сделай те мне все у кого есть 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;


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

Добавлено: 2008-07-11 20:40:50
nsand
Скачал исходники 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.

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

Добавлено: 2008-07-11 20:48:04
paradox_
нормально
патч недолжен ничего поламать
как работала миша
так и должна дальше работать после них
ищем и ждем у кого супер модные миши
у которых несколько коллекций HID

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

Добавлено: 2008-07-11 22:11:14
Alex Keda
тока в понедельник..

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

Добавлено: 2008-07-12 13:00:31
paradox_
поспешил = )))
кнопки не детектились
очередной патч
для 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;

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

Добавлено: 2008-07-12 20:34:15
nsand
еще дамп одной мыши.

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

[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 кнопок - видимых )

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

Добавлено: 2008-07-12 20:35:39
zingel
используй тег - code

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

Добавлено: 2008-07-14 13:26:13
Alex Keda
э... ядро целиком чтоли пересобирать?

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

Добавлено: 2008-07-14 14:30:46
Alex Keda
пашет.
двигается, кнопочки работают.
========
первый раз после ребута не работала клава.
второй, тоже не работала.
третий - сингл мод, отключение автозапуска иксов, выход - продолжение загрузки.
имею на логоне краш ядра.
четвёртая загрузка - всё удачно, но иксы руками - отключил в предыущий заход.
======
ребутаться ещё? =))

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

Добавлено: 2008-07-14 14:33:46
Alex Keda
снёс сорцы подчистую, ща ещё раз залью, наложу патч и проверю...

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

Добавлено: 2008-07-14 15:34:51
paradox_
та до паника вообще не должно дойти...
там токо к ums касаеться
либо миш работае либо нет