You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-full-overlay/sys-apps/lomoco/files/lomoco-1.0-gentoo-hardware-...

288 lines
9.1 KiB

- Support for other hardware
- ssr comment in the mouse array.
- Use of defines for numeric constants to improve code readability.
- Debian patch integrated
diff -Nuar --exclude '*~' lomoco-1.0.old/src/lomoco.c lomoco-1.0/src/lomoco.c
--- lomoco-1.0.old/src/lomoco.c 2006-03-01 06:10:05.000000000 -0800
+++ lomoco-1.0/src/lomoco.c 2006-04-30 02:38:05.107430674 -0700
@@ -32,11 +32,12 @@
* model: you can find on the hardware, look for M/N: ...
* csr: mouse with receiver (wireless)
* res: mouse has resolution control
- * sms: mouse has smart control
+ * ssr: mouse has smart scroll reporting
+ * sms: mouse has smart scroll
* dual: dual receiver (wireless mouse+wireless keyboard)
*
* product id, name, model, csr, res, ssr, sms, dual */
-mouse_t mice [] = {
+static mouse_t mice [] = {
{0xc00e, "Wheel Mouse Optical", "M-BJ58", 0, 1, 0, 0, 0},
{0xc00f, "MouseMan Traveler", "M-BJ79", 0, 1, 0, 0, 0},
{0xc012, "MouseMan Dual Optical", "M-BL63B", 0, 1, 0, 0, 0},
@@ -42,6 +42,7 @@
{0xc012, "MouseMan Dual Optical", "M-BL63B", 0, 1, 0, 0, 0},
{0xc01d, "MX510 Optical Mouse", "M-BS81A", 0, 1, 1, 1, 0},
{0xc01e, "MX518 Optical Mouse", "M-BS81A", 0, 1, 1, 0, 0},
+ {0xc051, "MX518 Optical Mouse", "M-BS81A", 0, 1, 1, 0, 0},
{0xc024, "MX300 Optical Mouse", "M-BP82", 0, 1, 0, 0, 0},
{0xc01b, "MX310 Optical Mouse", "M-BP86", 0, 1, 0, 0, 0},
{0xc025, "MX500 Optical Mouse", "M-BP81A", 0, 1, 1, 1, 0},
@@ -49,50 +50,37 @@
{0xc041, "G5 Laser Gaming Mouse", "M-UAC113", 0, 1, 0, 1, 0},
{0xc501, "Mouse Receiver", "C-BA4-MSE", 1, 0, 0, 0, 0},
{0xc502, "Dual Receiver", "C-UA3-DUAL", 1, 0, 0, 0, 1},
- {0xc503, "Receiver for MX900 Receiver", "C-UJ16A", 1, 0, 0, 1, 0},
+ {0xc503, "Receiver for MX900", "C-UJ16A", 1, 0, 0, 1, 0},
{0xc504, "Receiver for Cordless Freedom Optical", "C-BD9-DUAL", 1, 0, 0, 0, 1},
{0xc505, "Receiver for Cordless Elite Duo", "C-BG17-DUAL", 1, 0, 0, 0, 1},
{0xc506, "Receiver for MX700 Optical Mouse", "C-BF16-MSE", 1, 0, 0, 1, 0},
{0xc508, "Receiver for Cordless Optical TrackMan", "C-BA4-MSE", 1, 0, 0, 1, 0},
- {0xc702, "Receiver for Cordless Presenter", "C-UF15", 1, 0, 0, 0, 0},
- {0xc704, "Receiver for diNovo Media Desktop", "C-BQ16A", 1, 0, 1, 1, 0},
+
+ /* From Michele Noberasco <s4t4n@gentoo.org> */
+ {0xc50a, "Reciveer for Cordless Optical Mouse for Notebooks", "C-BJ27-MSE", 1, 0, 0, 0, 0},
+
+ /* From Robin H. Johnson <robbat2@gentoo.org> */
+ {0xc50b, "Receiver for Cordless Desktop MX", "C-BK16A-DUAL",1, 0, 0, 1, 1},
+
/* From Markus Wiesner <m_wiesner@gmx.net> */
{0xc50e, "Receiver for MX1000 Laser", "C-BN34", 1, 0, 1, 1, 0},
{0xc512, "Receiver for Cordless Desktop MX3100 Laser", "C-BO34", 1, 0, 0, 1, 1},
+
+ {0xc702, "Receiver for Cordless Presenter", "C-UF15", 1, 0, 0, 0, 0},
+ {0xc704, "Receiver for diNovo Media Desktop", "C-BQ16A", 1, 0, 1, 1, 0},
{0x0000, NULL, NULL, 0, 0, 0, 0}
};
-
/*
- * Description: Query the mouse and report all cordless mouse specific infos
+ * Description: Print out a set of CSR data
* e.g. receiver type, mouse type, battery status
*
- * Parameters: mouse_t *m
- * mouse struct with the mouse specs
- * struct usb_dev_handle *handle
- * usb device handle of the mouse
- * unsigned int addr
- * address for dual receivers
+ * Parameters: unsigned char* buf
+ * result from query_csr internals
*
* Return: void
*/
-static void query_csr(mouse_t *m, struct usb_dev_handle *handle,
- unsigned int addr) {
- unsigned char buf[12] = {0};
-
- if (usb_control_msg ( handle,
- USB_TYPE_VENDOR | USB_ENDPOINT_IN,
- 0x09,
- (0x0003 | addr),
- (0x0000 | addr),
- (char *) buf,
- 8,
- TIMEOUT ) != 8) {
-
- perror("Writing to USB device: CSR");
- exit(EXIT_FAILURE);
- }
-
+static void print_csr(unsigned char* buf) {
/* We have not obtained blocks P6 P0 P4 P5 P8 P9 PB0 PB1 */
/* Is a C504 receiver busy? */
@@ -111,6 +99,7 @@
case 0x3c: printf ("C508\n"); break;
case 0x3d: printf ("C506\n"); break;
case 0x3e: printf ("C505\n"); break;
+ case 0x3f: printf ("C50B\n"); break;
case 0x42: printf ("C512\n"); break;
default: printf ("Unknown (type %x)\n", P0);
}
@@ -138,6 +127,7 @@
case 0x82: printf ("Cordless Optical TrackMan\n"); break;
case 0x8A: printf ("MX700 Cordless Optical Mouse\n"); break;
case 0x8B: printf ("MX700 Cordless Optical Mouse (2ch)\n"); break;
+ case 0x94: printf ("Cordless Optical Mouse for Notebooks\n"); break;
default: printf ("Unknown (type %x)\n", P4);
}
@@ -199,6 +189,38 @@
}
}
+/*
+ * Description: Query the mouse and report all cordless mouse specific infos
+ * e.g. receiver type, mouse type, battery status
+ *
+ * Parameters: mouse_t *m
+ * mouse struct with the mouse specs
+ * struct usb_dev_handle *handle
+ * usb device handle of the mouse
+ * unsigned int addr
+ * address for dual receivers
+ *
+ * Return: void
+ */
+static void query_csr(mouse_t *m, struct usb_dev_handle *handle,
+ unsigned int addr) {
+ unsigned char buf[12] = {0};
+
+ if (usb_control_msg ( handle,
+ USB_TYPE_VENDOR | USB_ENDPOINT_IN,
+ REQUEST_MOUSE_CSR,
+ (0x0003 | addr),
+ (0x0000 | addr),
+ (char *) buf,
+ 8,
+ TIMEOUT ) != 8) {
+
+ perror("Writing to USB device: CSR");
+ exit(EXIT_FAILURE);
+ }
+ print_csr(buf);
+
+}
/*
* Description: Query the mouse and report the current resolution
@@ -218,8 +240,8 @@
if (usb_control_msg ( handle,
USB_TYPE_VENDOR | USB_ENDPOINT_IN,
- 0x01,
- (0x000e | addr),
+ REQUEST_MOUSE_GET_RES_SSR,
+ (VALUE_MOUSE_GET_RES | addr),
(0x0000 | addr),
(char *) buf,
1,
@@ -255,8 +277,8 @@
if (m->has_ssr) {
if (usb_control_msg ( handle,
USB_TYPE_VENDOR | USB_ENDPOINT_IN,
- 0x01,
- (0x0017 | addr),
+ REQUEST_MOUSE_GET_RES_SSR,
+ (VALUE_MOUSE_GET_SSR | addr),
(0x0000 | addr),
(char*) buf,
1,
@@ -394,8 +416,8 @@
assert ((set_channel == 1) || (set_channel == 2));
if (usb_control_msg ( handle,
USB_TYPE_VENDOR,
- 0x02,
- (0x0008 | addr),
+ REQUEST_MOUSE_PUT_RES_SMS,
+ (VALUE_MOUSE_CHANNEL | addr),
((set_channel - 1) | addr),
NULL,
0,
@@ -412,8 +434,8 @@
if (set_unlock) {
if (usb_control_msg ( handle,
USB_TYPE_VENDOR,
- 0x02,
- (0x06 | addr),
+ REQUEST_MOUSE_PUT_RES_SMS,
+ (VALUE_MOUSE_UNLOCK | addr),
(0x1 | addr),
NULL,
0,
@@ -430,8 +452,8 @@
if (set_lock) {
if (usb_control_msg ( handle,
USB_TYPE_VENDOR,
- 0x02,
- (0x0006 | addr),
+ REQUEST_MOUSE_PUT_RES_SMS,
+ (VALUE_MOUSE_UNLOCK | addr),
(0x0000 | addr),
NULL,
0,
@@ -448,8 +470,8 @@
if (set_clear) {
if (usb_control_msg ( handle,
USB_TYPE_VENDOR,
- 0x09,
- (0x0004 | addr),
+ REQUEST_MOUSE_CSR,
+ (VALUE_MOUSE_CLEAR | addr),
(0x0000 | addr),
NULL,
0,
@@ -483,8 +505,8 @@
if (usb_control_msg ( handle,
USB_TYPE_VENDOR,
- 0x0002,
- 0x000e,
+ REQUEST_MOUSE_PUT_RES_SMS,
+ VALUE_MOUSE_PUT_RES,
(set_res / 400) + 2,
NULL,
0,
@@ -514,8 +536,8 @@
assert ((set_sms == 1) || (set_sms == -1));
if (usb_control_msg ( handle,
USB_TYPE_VENDOR,
- 0x02,
- 0x0017,
+ REQUEST_MOUSE_PUT_RES_SMS,
+ VALUE_MOUSE_PUT_SSR,
(set_sms == 1 ? 0x0001 : 0x0000),
NULL,
0,
@@ -641,7 +663,7 @@
/* Do we support this device? If so, list it. */
if ((m = find_mouse (device)) != NULL) {
- printf ("%s.%s: %04x:%04x %s (%s) Caps: %s%s%s\n",
+ printf ("%s.%s: %04x:%04x %s (%s) Caps: %s%s%s%s\n",
device->bus->dirname,
device->filename,
device->descriptor.idVendor,
@@ -650,6 +672,7 @@
m->model,
m->has_csr? "CSR ": "",
m->has_res? "RES ": "",
+ m->has_ssr? "SSR ": "",
m->has_sms? "SMS ": ""
);
}
@@ -667,7 +671,7 @@
device->filename,
device->descriptor.idVendor,
device->descriptor.idProduct,
- ret ? product : "Unknown"
+ ret > 0 ? product : "Unknown"
);
continue;
}
diff -Nuar --exclude '*~' lomoco-1.0.old/src/lomoco.h lomoco-1.0/src/lomoco.h
--- lomoco-1.0.old/src/lomoco.h 2006-03-01 06:10:05.000000000 -0800
+++ lomoco-1.0/src/lomoco.h 2006-04-30 02:34:04.381175920 -0700
@@ -97,4 +97,17 @@
int is_dual;
} mouse_t;
+
+#define REQUEST_MOUSE_CSR 0x09
+#define VALUE_MOUSE_GET 0x0003
+#define VALUE_MOUSE_CLEAR 0x0004
+#define REQUEST_MOUSE_GET_RES_SSR 0x01
+#define VALUE_MOUSE_GET_RES 0x000e
+#define VALUE_MOUSE_GET_SSR 0x0017
+#define REQUEST_MOUSE_PUT_RES_SMS 0x02
+#define VALUE_MOUSE_UNLOCK 0x0006
+#define VALUE_MOUSE_CHANNEL 0x0008
+#define VALUE_MOUSE_PUT_RES 0x000e
+#define VALUE_MOUSE_PUT_SSR 0x0017
+
#endif /* __LOMOCO_H */