Portál AbcLinuxu, 15. července 2025 02:22


Dotaz: Microsoft Natural Ergonomic Keyboard 4000

11.3.2006 00:44 zoox | skóre: 3
Microsoft Natural Ergonomic Keyboard 4000
Přečteno: 1112×
Odpovědět | Admin
Zdravim, mozte mi poradit akym sposobom nakonfigurovat moju novu klavesnicu? Nemam ziadnu skusenost s nastavovanim multimedialnej klavesnice pod linuxom. Existuje daky soft pre nastavenie klavesnice? Ako na to?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.3.2006 00:49 Radek Trnka | skóre: 26 | blog: Jen_tak | kousek od ČB
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, stačí trochu pohledat.

Multimediální a jinak vylepšené klávesnice
Černé díry jsou tam, kde Bůh dělil nulou. -- Steven Wright one Liners
31.3.2006 16:29 Slávek
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
Pokud jste podle návodu zkoušel, jak reagují jednotlivé klávesy, zjistil jste, že některé nereagují. A protože se radou přenechat klávesnici nějakému uživateli Windows rozhodně nechci řídit, hledal jsem další informace a našel záplatu pro jádro, která reakci na klávesy doplňuje:

http://lkml.org/lkml/2006/3/1/361

Bohužel v jádře 2.6.15 ani 2.6.16 zatím záplata není.

Slávek
11.4.2006 13:23 msnek4000
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
neveste hlavu, pred nejakou dobou jsem si dopsal podporu pro nektere klavesy (nic sloziteho jen pridani keykodu a definic ve 2 zdrojacich), ale horni klavesy 1 - 5 se mi nepodarilo rozbehat (nejak jsem neprisel na to, jak vytvorit udalost :o) ). Dnes jsem se na to chtel podivat podrobneji a nasel vami zminovany patch. prave jej jdu zkusit, po rebootu poreferuji.
11.4.2006 23:59 msnek4000
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
bohuzel, zminovany patch s moji klavesnici nespolupracuje (cti funguje to jako bez nej), coz mne docela mate, kod je obdobny memu a predpokladal bych, ze pojedou vsechny klavesy krome horni petice. zitra se na to podivam blize.
12.4.2006 01:31 msnek4000
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
po premapovani klaves KEY_ZOOMPLUS (na hodnoty nizsi nez 255), KEY_ZOOMMINUS, vytvoreni mapovani pro KEY_MYFAVORITES a prejmenovani (jen v *.c) KEY_FAVORITES na KEY_MYFAVORITES (nechtel jsem menit puvodni mapovani klaves v jadre) funguji vsechny klavesy az na horni petici. rad bych vedel, kde je zakopany pes (moje klavesnice pochazi ze setu s mysi, tedy muze mit jinou revizi a mirne odlisne chovani), zkusim vypisovat nejake informace, trebas to k necemu povede...
14.4.2006 01:09 msnek4000
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
problem vyresen, prikladam patch vuci 2.6.16 a nastaveni .xmodmap: msnek4000.patch
diff -ruNp linux-2.6.16-rc5/drivers/usb/input/hid-debug.h linux-2.6.16-rc5.patched/drivers/usb/input/hid-debug.h
--- linux-2.6.16-rc5/drivers/usb/input/hid-debug.h	2006-02-27 16:09:35.000000000 +1100
+++ linux-2.6.16-rc5.patched/drivers/usb/input/hid-debug.h	2006-03-02 10:48:49.000000000 +1100
@@ -675,9 +675,10 @@ static char *keys[KEY_MAX + 1] = {
 	[KEY_SLOW] = "Slow",			[KEY_SHUFFLE] = "Shuffle",
 	[KEY_BREAK] = "Break",			[KEY_PREVIOUS] = "Previous",
 	[KEY_DIGITS] = "Digits",		[KEY_TEEN] = "TEEN",
-	[KEY_TWEN] = "TWEN",			[KEY_DEL_EOL] = "DeleteEOL",
-	[KEY_DEL_EOS] = "DeleteEOS",		[KEY_INS_LINE] = "InsertLine",
-	[KEY_DEL_LINE] = "DeleteLine",
+	[KEY_TWEN] = "TWEN",			[KEY_ZOOMPLUS] = "ZoomPlus",
+	[KEY_ZOOMMINUS] = "ZoomMinus",		[KEY_SPELL] = "Spell",
+	[KEY_DEL_EOL] = "DeleteEOL",		[KEY_DEL_EOS] = "DeleteEOS",
+	[KEY_INS_LINE] = "InsertLine",		[KEY_DEL_LINE] = "DeleteLine",
 	[KEY_SEND] = "Send",			[KEY_REPLY] = "Reply",
 	[KEY_FORWARDMAIL] = "ForwardMail",	[KEY_SAVE] = "Save",
 	[KEY_DOCUMENTS] = "Documents",
diff -ruNp linux-2.6.16-rc5/drivers/usb/input/hid-input.c linux-2.6.16-rc5.patched/drivers/usb/input/hid-input.c
--- linux-2.6.16-rc5/drivers/usb/input/hid-input.c	2006-02-27 16:09:35.000000000 +1100
+++ linux-2.6.16-rc5.patched/drivers/usb/input/hid-input.c	2006-03-02 13:47:00.000000000 +1100
@@ -51,7 +51,7 @@ static const unsigned char hid_keyboard[
 	115,114,unk,unk,unk,121,unk, 89, 93,124, 92, 94, 95,unk,unk,unk,
 	122,123, 90, 91, 85,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,
 	unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,
-	unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,
+	unk,unk,unk,unk,unk,unk,179,180,unk,unk,unk,unk,unk,unk,unk,unk,
 	unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,
 	unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,unk,
 	 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
@@ -426,12 +426,16 @@ static void hidinput_configure_usage(str
 				case 0x0e5: map_key_clear(KEY_BASSBOOST);	break;
 				case 0x0e9: map_key_clear(KEY_VOLUMEUP);	break;
 				case 0x0ea: map_key_clear(KEY_VOLUMEDOWN);	break;
+				case 0x182: map_key_clear(KEY_MYFAVORITES);	break;
 				case 0x183: map_key_clear(KEY_CONFIG);		break;
 				case 0x18a: map_key_clear(KEY_MAIL);		break;
 				case 0x192: map_key_clear(KEY_CALC);		break;
 				case 0x194: map_key_clear(KEY_FILE);		break;
 				case 0x1a7: map_key_clear(KEY_DOCUMENTS);	break;
+				case 0x1ab: map_key_clear(KEY_SPELL);		break;
 				case 0x201: map_key_clear(KEY_NEW);		break;
+				case 0x202: map_key_clear(KEY_OPEN);		break;
+				case 0x203: map_key_clear(KEY_CLOSE);		break;
 				case 0x207: map_key_clear(KEY_SAVE);		break;
 				case 0x208: map_key_clear(KEY_PRINT);		break;
 				case 0x209: map_key_clear(KEY_PROPS);		break;
@@ -446,6 +450,8 @@ static void hidinput_configure_usage(str
 				case 0x226: map_key_clear(KEY_STOP);		break;
 				case 0x227: map_key_clear(KEY_REFRESH);		break;
 				case 0x22a: map_key_clear(KEY_BOOKMARKS);	break;
+				case 0x22d: map_key_clear(KEY_ZOOMPLUS);	break;
+				case 0x22e: map_key_clear(KEY_ZOOMMINUS);	break;
 				case 0x233: map_key_clear(KEY_SCROLLUP);	break;
 				case 0x234: map_key_clear(KEY_SCROLLDOWN);	break;
 				case 0x238: map_rel(REL_HWHEEL);		break;
@@ -483,8 +489,23 @@ static void hidinput_configure_usage(str
 			}
 			break;
 
-		case HID_UP_MSVENDOR:
-			goto ignore;
+		case HID_UP_MSVENDOR: /* Reported on MS Natural Ergonomic 4000 USB keyboard */
+			set_bit(EV_REP, input->evbit);
+			switch(usage->hid & HID_USAGE) {
+				case 0xff05:
+					/* The Favourites 1-5 keys */
+					map_key_clear(KEY_FN);
+					clear_bit(KEY_F20, input->keybit);
+					clear_bit(KEY_F21, input->keybit);
+					clear_bit(KEY_F22, input->keybit);
+					clear_bit(KEY_F23, input->keybit);
+					clear_bit(KEY_F24, input->keybit);
+					break;
+
+				default:    goto ignore;
+			}
+
+			break;
 
 		case HID_UP_CUSTOM: /* Reported on Logitech and Powerbook USB keyboards */
 
@@ -655,6 +676,24 @@ void hidinput_hid_event(struct hid_devic
 	if ((hid->quirks & HID_QUIRK_POWERBOOK_HAS_FN) && hidinput_pb_event(hid, input, usage, value))
 		return;
 
+	if (usage->hid == (HID_UP_MSVENDOR | 0xff05)) {
+		unsigned int code = 0;
+		switch (value) {
+			case 0x01: code = KEY_F20;	break;
+			case 0x02: code = KEY_F21;	break;
+			case 0x04: code = KEY_F22;	break;
+			case 0x08: code = KEY_F23;	break;
+			case 0x10: code = KEY_F24;	break;
+			default:			break;
+		}
+		if (code) {
+			set_bit(code,input->keybit);
+			usage->type = EV_KEY;
+			usage->code = code;
+			value=1;
+		}
+	}
+
 	if (usage->hat_min < usage->hat_max || usage->hat_dir) {
 		int hat_dir = usage->hat_dir;
 		if (!hat_dir)
diff -ruNp linux-2.6.16-rc5/drivers/usb/input/usbkbd.c linux-2.6.16-rc5.patched/drivers/usb/input/usbkbd.c
--- linux-2.6.16-rc5/drivers/usb/input/usbkbd.c	2006-02-27 16:09:35.000000000 +1100
+++ linux-2.6.16-rc5.patched/drivers/usb/input/usbkbd.c	2006-03-02 10:44:28.000000000 +1100
@@ -58,7 +58,7 @@ static unsigned char usb_kbd_keycode[256
 	115,114,  0,  0,  0,121,  0, 89, 93,124, 92, 94, 95,  0,  0,  0,
 	122,123, 90, 91, 85,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
-	  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+	  0,  0,  0,  0,  0,  0,179,180,  0,  0,  0,  0,  0,  0,  0,  0,
 	  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	 29, 42, 56,125, 97, 54,100,126,164,166,165,163,161,115,114,113,
diff -ruNp linux-2.6.16-rc5/include/linux/input.h linux-2.6.16-rc5.patched/include/linux/input.h
--- linux-2.6.16-rc5/include/linux/input.h	2006-02-27 16:09:35.000000000 +1100
+++ linux-2.6.16-rc5.patched/include/linux/input.h	2006-03-02 10:15:35.000000000 +1100
@@ -484,6 +484,10 @@ struct input_absinfo {
 #define KEY_DIGITS		0x19d
 #define KEY_TEEN		0x19e
 #define KEY_TWEN		0x19f
+#define KEY_ZOOMPLUS		237
+#define KEY_ZOOMMINUS		238
+#define KEY_SPELL		236
+#define KEY_MYFAVORITES	239
 
 #define KEY_DEL_EOL		0x1c0
 #define KEY_DEL_EOS		0x1c1
.xmodmap
keycode 130=XF86HomePage
keycode 122=XF86Search
keycode 236=XF86Mail
keycode 160=XF86AudioMute
keycode 174=XF86AudioLowerVolume
keycode 176=XF86AudioRaiseVolume
keycode 162=XF86AudioPlay
keycode 161=XF86Calculator
keycode 244=XF86Terminal
keycode 245=XF86Favorites
keycode 135=XF86Back
keycode 138=XF86Forward
keycode 137=XF86New
keycode 191=XF86Open
keycode 175=XF86Close
keycode 228=XF86Reply
keycode 142=XF86MailForward
keycode 218=XF86Send
keycode 241=XF86Spell
keycode 213=XF86Save
keycode 185=XF86Eject
keycode 242=XF86ZoomIn
keycode 243=XF86ZoomOut
keycode 234=XF86Back
keycode 233=XF86Forward
keycode 170=XF86Launch0
keycode 219=XF86Launch1
keycode 249=XF86Launch2
keycode 205=XF86Launch3
keycode 207=XF86Launch4
31.3.2006 18:45 jm
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co treba LinEAK? :-)
svido avatar 11.7.2007 16:14 svido | skóre: 28
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
No to snad ne? LinEAK neni ciste reseni. Kdyz, tak upravou konfiguraku, ne nejakym programem. To mi pripomina Widle, neco na neco, pritom to jde manualne. Grrr...
11.7.2007 13:40 blogsm | skóre: 8 | blog: mozektevidi
Rozbalit Rozbalit vše Re: Microsoft Natural Ergonomic Keyboard 4000
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chtěl bych se zeptat, jestli se už něco vyřešilo, mám tuto klávesnici a Fedoru 7. Chtěl bych zprovoznit hlavně zoom kolečko (ale ne na zoomování, ale na pohyb v textu)
S linuxem teprve začínám! (už půl roku) mozektevidi.net

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.