[udev/f13/master] - fixed SELinux contexts on "add" events - backported keymaps - backported cdrom_id

Harald Hoyer harald at fedoraproject.org
Wed Sep 22 12:02:55 UTC 2010


commit 43b305ff9c9a87fb0b97da0e31d2022c0617c6d9
Author: Harald Hoyer <harald at redhat.com>
Date:   Wed Sep 22 14:02:53 2010 +0200

    - fixed SELinux contexts on "add" events
    - backported keymaps
    - backported cdrom_id

 ...x-context-on-add-but-not-on-change-events.patch |   35 +++
 udev-153-cdrom_id-backport.patch                   |  246 ++++++++++++++++++++
 udev-153-keymap-backport.patch                     |  194 +++++++++++++++
 3 files changed, 475 insertions(+), 0 deletions(-)
---
diff --git a/0001-set-SELinux-context-on-add-but-not-on-change-events.patch b/0001-set-SELinux-context-on-add-but-not-on-change-events.patch
new file mode 100644
index 0000000..7ed88b4
--- /dev/null
+++ b/0001-set-SELinux-context-on-add-but-not-on-change-events.patch
@@ -0,0 +1,35 @@
+From 326c5fc3ea684825629eccaf33a548759162a539 Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay.sievers at vrfy.org>
+Date: Tue, 31 Aug 2010 21:29:21 +0200
+Subject: [PATCH] set SELinux context on 'add' but not on 'change' events
+
+---
+ udev/udev-node.c |    9 ++++++++-
+ 1 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/udev/udev-node.c b/udev/udev-node.c
+index 228b3eb..c8113f1 100644
+--- a/udev/udev-node.c
++++ b/udev/udev-node.c
+@@ -56,10 +56,17 @@ int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_
+ 				info(udev, "set permissions %s, %#o, uid=%u, gid=%u\n", file, mode, uid, gid);
+ 				chmod(file, mode);
+ 				chown(file, uid, gid);
+-				udev_selinux_lsetfilecon(udev, file, mode);
+ 			} else {
+ 				info(udev, "preserve permissions %s, %#o, uid=%u, gid=%u\n", file, mode, uid, gid);
+ 			}
++			/*
++			 * Set initial selinux file context only on add events.
++			 * We set the proper context on bootup (triger) or for newly
++			 * added devices, but we don't change it later, in case
++			 * something else has set a custom context in the meantime.
++			 */
++			if (strcmp(udev_device_get_action(dev), "add") == 0)
++				udev_selinux_lsetfilecon(udev, file, mode);
+ 			/* always update timestamp when we re-use the node, like on media change events */
+ 			utimensat(AT_FDCWD, file, NULL, 0);
+ 		} else {
+-- 
+1.7.2.3
+
diff --git a/udev-153-cdrom_id-backport.patch b/udev-153-cdrom_id-backport.patch
new file mode 100644
index 0000000..46e0a5b
--- /dev/null
+++ b/udev-153-cdrom_id-backport.patch
@@ -0,0 +1,246 @@
+diff -ur udev-153-orig/extras/cdrom_id/cdrom_id.c udev-153/extras/cdrom_id/cdrom_id.c
+--- udev-153-orig/extras/cdrom_id/cdrom_id.c	2010-04-17 19:29:58.000000000 +0200
++++ udev-153/extras/cdrom_id/cdrom_id.c	2010-08-31 10:35:41.000000000 +0200
+@@ -85,6 +85,8 @@
+ static unsigned int cd_media_dvd_rom = 0;
+ static unsigned int cd_media_dvd_r = 0;
+ static unsigned int cd_media_dvd_rw = 0;
++static unsigned int cd_media_dvd_rw_ro = 0; /* restricted overwrite mode */
++static unsigned int cd_media_dvd_rw_seq = 0; /* sequential mode */
+ static unsigned int cd_media_dvd_ram = 0;
+ static unsigned int cd_media_dvd_plus_r = 0;
+ static unsigned int cd_media_dvd_plus_rw = 0;
+@@ -348,6 +350,39 @@
+ 	return 0;
+ }
+ 
++static int cd_profiles_old_mmc(struct udev *udev, int fd)
++{
++	struct scsi_cmd sc;
++	int err;
++
++	unsigned char header[32];
++
++	scsi_cmd_init(udev, &sc, header, sizeof(header));
++	scsi_cmd_set(udev, &sc, 0, 0x51);
++	scsi_cmd_set(udev, &sc, 8, sizeof(header));
++	scsi_cmd_set(udev, &sc, 9, 0);
++	err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
++	if ((err != 0)) {
++		info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
++		info(udev, "no current profile, assuming no media\n");
++		return -1;
++	};
++
++	cd_media = 1;
++
++	if (header[2] & 16) {
++		cd_media_cd_rw = 1;
++		info(udev, "profile 0x0a media_cd_rw\n");
++	} else if ((header[2] & 3) < 2 && cd_cd_r) {
++		cd_media_cd_r = 1;
++		info(udev, "profile 0x09 media_cd_r\n");
++	} else {
++		cd_media_cd_rom = 1;
++		info(udev, "profile 0x08 media_cd_rom\n");
++	}
++	return 0;
++}
++
+ static int cd_profiles(struct udev *udev, int fd)
+ {
+ 	struct scsi_cmd sc;
+@@ -365,6 +400,12 @@
+ 	err = scsi_cmd_run(udev, &sc, fd, features, sizeof(features));
+ 	if ((err != 0)) {
+ 		info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
++		/* handle pre-MMC2 drives which do not support GET CONFIGURATION */
++		if (SK(err) == 0x5 && ASC(err) == 0x20) {
++			info(udev, "drive is pre-MMC2 and does not support 46h get configuration command\n");
++			info(udev, "trying to work around the problem\n");
++			return cd_profiles_old_mmc(udev, fd);
++		}
+ 		return -1;
+ 	}
+ 
+@@ -440,10 +481,16 @@
+ 		cd_media_dvd_ram = 1;
+ 		break;
+ 	case 0x13:
++		info(udev, "profile 0x%02x media_dvd_rw_ro\n", cur_profile);
++		cd_media = 1;
++		cd_media_dvd_rw = 1;
++		cd_media_dvd_rw_ro = 1;
++		break;
+ 	case 0x14:
+-		info(udev, "profile 0x%02x media_dvd_rw\n", cur_profile);
++		info(udev, "profile 0x%02x media_dvd_rw_seq\n", cur_profile);
+ 		cd_media = 1;
+ 		cd_media_dvd_rw = 1;
++		cd_media_dvd_rw_seq = 1;
+ 		break;
+ 	case 0x1B:
+ 		info(udev, "profile 0x%02x media_dvd_plus_r\n", cur_profile);
+@@ -527,12 +574,126 @@
+ 
+ 	cd_media = 1;
+ 	info(udev, "disk type %02x\n", header[8]);
++	info(udev, "hardware reported media status: %s\n", media_status[header[2] & 3]);
+ 
+ 	/* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
+ 	if (!cd_media_cd_rom)
+ 		cd_media_state = media_status[header[2] & 3];
+ 
+-	if ((header[2] & 3) != 2)
++	/* fresh DVD-RW in restricted overwite mode reports itself as
++	 * "appendable"; change it to "blank" to make it consistent with what
++	 * gets reported after blanking, and what userspace expects  */
++	if (cd_media_dvd_rw_ro && (header[2] & 3) == 1)
++		cd_media_state = media_status[0];
++
++	/* DVD+RW discs (and DVD-RW in restricted mode) once formatted are
++	 * always "complete", DVD-RAM are "other" or "complete" if the disc is
++	 * write protected; we need to check the contents if it is blank */
++	if ((cd_media_dvd_rw_ro || cd_media_dvd_plus_rw || cd_media_dvd_plus_rw_dl || cd_media_dvd_ram) && (header[2] & 3) > 1) {
++		unsigned char buffer[32 * 2048];
++		unsigned char result, len;
++		int block, offset;
++
++		if (cd_media_dvd_ram) {
++			/* a write protected dvd-ram may report "complete" status */
++
++			unsigned char dvdstruct[8];
++			unsigned char format[12];
++
++			scsi_cmd_init(udev, &sc, dvdstruct, sizeof(dvdstruct));
++			scsi_cmd_set(udev, &sc, 0, 0xAD);
++			scsi_cmd_set(udev, &sc, 7, 0xC0);
++			scsi_cmd_set(udev, &sc, 9, sizeof(dvdstruct));
++			scsi_cmd_set(udev, &sc, 11, 0);
++			err = scsi_cmd_run(udev, &sc, fd, dvdstruct, sizeof(dvdstruct));
++			if ((err != 0)) {
++				info_scsi_cmd_err(udev, "READ DVD STRUCTURE", err);
++				return -1;
++			}
++			if (dvdstruct[4] & 0x02) {
++				cd_media_state = media_status[2];
++				info(udev, "write-protected DVD-RAM media inserted\n");
++				goto determined;
++			}
++
++			/* let's make sure we don't try to read unformatted media */
++			scsi_cmd_init(udev, &sc, format, sizeof(format));
++			scsi_cmd_set(udev, &sc, 0, 0x23);
++			scsi_cmd_set(udev, &sc, 8, sizeof(format));
++			scsi_cmd_set(udev, &sc, 9, 0);
++			err = scsi_cmd_run(udev, &sc, fd, format, sizeof(format));
++			if ((err != 0)) {
++				info_scsi_cmd_err(udev, "READ DVD FORMAT CAPACITIES", err);
++				return -1;
++			}
++
++			len = format[3];
++			if (len & 7 || len < 16) {
++				info(udev, "invalid format capacities length\n");
++				return -1;
++			}
++
++			switch(format[8] & 3) {
++			    case 1:
++				info(udev, "unformatted DVD-RAM media inserted\n");
++				/* This means that last format was interrupted
++				 * or failed, blank dvd-ram discs are factory
++				 * formatted. Take no action here as it takes
++				 * quite a while to reformat a dvd-ram and it's
++				 * not automatically started */
++				goto determined;
++
++			    case 2:
++				info(udev, "formatted DVD-RAM media inserted\n");
++				break;
++
++			    case 3:
++				cd_media = 0; //return no media
++				info(udev, "format capacities returned no media\n");
++				return -1;
++			}
++		}
++
++		/* Take a closer look at formatted media (unformatted DVD+RW
++		 * has "blank" status", DVD-RAM was examined earlier) and check
++		 * for ISO and UDF PVDs or a fs superblock presence and do it
++		 * in one ioctl (we need just sectors 0 and 16) */
++		scsi_cmd_init(udev, &sc, buffer, sizeof(buffer));
++		scsi_cmd_set(udev, &sc, 0, 0x28);
++		scsi_cmd_set(udev, &sc, 5, 0);
++		scsi_cmd_set(udev, &sc, 8, 32);
++		scsi_cmd_set(udev, &sc, 9, 0);
++		err = scsi_cmd_run(udev, &sc, fd, buffer, sizeof(buffer));
++		if ((err != 0)) {
++			info_scsi_cmd_err(udev, "READ FIRST 32 BLOCKS", err);
++			return -1;
++		}
++
++		/* if any non-zero data is found in sector 16 (iso and udf) or
++		 * eventually 0 (fat32 boot sector, ext2 superblock, etc), disc
++		 * is assumed non-blank */
++		result = 0;
++
++		for (block = 32768; block >= 0 && !result; block -= 32768) {
++			offset = block;
++			while (offset < (block + 2048) && !result) {
++				result = buffer [offset];
++				offset++;
++			}
++		}
++
++		if (!result) {
++			cd_media_state = media_status[0];
++			info(udev, "no data in blocks 0 or 16, assuming blank\n");
++		} else {
++			info(udev, "data in blocks 0 or 16, assuming complete\n");
++		}
++	}
++
++determined:
++	/* "other" is e. g. DVD-RAM, can't append sessions there; DVDs in
++	 * restricted overwrite mode can never append, only in sequential mode */
++	if ((header[2] & 3) < 2 && !cd_media_dvd_rw_ro)
+ 		cd_media_session_next = header[10] << 8 | header[5];
+ 	cd_media_session_count = header[9] << 8 | header[4];
+ 	cd_media_track_count = header[11] << 8 | header[6];
+@@ -710,13 +871,11 @@
+ 	if (cd_profiles(udev, fd) < 0)
+ 		goto print;
+ 
+-	/* get writable media state */
+-	if (cd_media_info(udev, fd) < 0)
+-		goto print;
+-
+ 	/* get session/track info */
+-	if (cd_media_toc(udev, fd) < 0)
+-		goto print;
++	cd_media_toc(udev, fd);
++
++	/* get writable media state */
++	cd_media_info(udev, fd);
+ 
+ print:
+ 	printf("ID_CDROM=1\n");
+@@ -810,14 +969,14 @@
+ 		printf("ID_CDROM_MEDIA_SESSION_NEXT=%d\n", cd_media_session_next);
+ 	if (cd_media_session_count > 0)
+ 		printf("ID_CDROM_MEDIA_SESSION_COUNT=%d\n", cd_media_session_count);
++	if (cd_media_session_count > 1 && cd_media_session_last_offset > 0)
++		printf("ID_CDROM_MEDIA_SESSION_LAST_OFFSET=%llu\n", cd_media_session_last_offset);
+ 	if (cd_media_track_count > 0)
+ 		printf("ID_CDROM_MEDIA_TRACK_COUNT=%d\n", cd_media_track_count);
+ 	if (cd_media_track_count_audio > 0)
+ 		printf("ID_CDROM_MEDIA_TRACK_COUNT_AUDIO=%d\n", cd_media_track_count_audio);
+ 	if (cd_media_track_count_data > 0)
+ 		printf("ID_CDROM_MEDIA_TRACK_COUNT_DATA=%d\n", cd_media_track_count_data);
+-	if (cd_media_session_last_offset > 0)
+-		printf("ID_CDROM_MEDIA_SESSION_LAST_OFFSET=%llu\n", cd_media_session_last_offset);
+ exit:
+ 	if (fd >= 0)
+ 		close(fd);
diff --git a/udev-153-keymap-backport.patch b/udev-153-keymap-backport.patch
new file mode 100644
index 0000000..4f97c2f
--- /dev/null
+++ b/udev-153-keymap-backport.patch
@@ -0,0 +1,194 @@
+diff -urN udev-153-orig/extras/keymap/95-keyboard-force-release.rules udev-153/extras/keymap/95-keyboard-force-release.rules
+--- udev-153-orig/extras/keymap/95-keyboard-force-release.rules	2010-09-21 13:52:31.000000000 +0200
++++ udev-153/extras/keymap/95-keyboard-force-release.rules	2010-08-04 14:23:27.000000000 +0200
+@@ -19,7 +19,7 @@
+ ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}"
+ 
+ 
+-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N128*|*N130*|*N140*|*N210*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
++ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*E252*|*N120*|*N128*|*N130*|*N140*|*N148/N208*|*N150*|*N150/N210/N220*|*N220*|*N308*|*N310*|*N510*|*NB30*|*NC10/N110*|*ND10*|*Q210/P210*|*R410P*|*R425/R525*|*R428/P428*|*R460*|*R463*|*R468/R418*|*R480/R431/R481*|*R509*|*R518*|*R519/R719*|*R520/R522/R620*|*R528/R728*|*R530/R730*|*R530/R730/P590*|*R560*|*R580*|*R580/R590*|*R59/R60/R61*|*R59P/R60P/R61P*|*R710*|*R720*|*R780/R778*|*SR58P*|*SR700*|*SR70S/SR71S*|*SX22S*|*X118*|*X120*|*X460*", RUN+="keyboard-force-release.sh $devpath samsung-other"
+ 
+ ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Studio 1557|Studio 1558", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
+ 
+@@ -29,4 +29,10 @@
+ 
+ ENV{DMI_VENDOR}=="MTC", ATTR{[dmi/id]product_version}=="A0", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
+ 
++ENV{DMI_VENDOR}=="PEGATRON CORP.", ATTR{[dmi/id]product_name}=="Spring Peak", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
++
++ENV{DMI_VENDOR}=="TOSHIBA", ATTR{[dmi/id]product_name}=="Satellite U300|Satellite Pro U300|Satellite U305", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
++
++ENV{DMI_VENDOR}=="Viooo Corporation", ATTR{[dmi/id]product_name}=="PT17", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
++
+ LABEL="force_release_end"
+diff -urN udev-153-orig/extras/keymap/95-keymap.rules udev-153/extras/keymap/95-keymap.rules
+--- udev-153-orig/extras/keymap/95-keymap.rules	2010-09-21 13:52:31.000000000 +0200
++++ udev-153/extras/keymap/95-keymap.rules	2010-09-21 12:02:18.000000000 +0200
+@@ -21,7 +21,11 @@
+ 
+ ENV{ID_VENDOR}=="Logitech*", ATTRS{name}=="Logitech USB Multimedia Keyboard", RUN+="keymap $name logitech-wave"
+ ENV{ID_VENDOR}=="Logitech*", ATTRS{name}=="Logitech USB Receiver", RUN+="keymap $name logitech-wave-cordless"
++# Logitech Cordless Wave Pro looks slightly weird; some hotkeys are coming through the mouse interface
++ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c529", ATTRS{name}=="Logitech USB Receiver", RUN+="keymap $name logitech-wave-pro-cordless"
++
+ ENV{ID_VENDOR}=="Lite-On_Technology_Corp*", ATTRS{name}=="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint", RUN+="keymap $name lenovo-thinkpad-usb-keyboard-trackpoint"
++ENV{ID_VENDOR_ID}=="04b3", ENV{ID_MODEL_ID}=="301[89]", RUN+="keymap $name ibm-thinkpad-usb-keyboard-trackpoint"
+ 
+ GOTO="keyboard_end"
+ 
+@@ -37,11 +41,12 @@
+ 
+ ENV{DMI_VENDOR}=="IBM*", KERNELS=="input*", ATTRS{name}=="ThinkPad Extra Buttons", RUN+="keymap $name module-ibm"
+ ENV{DMI_VENDOR}=="LENOVO*", KERNELS=="input*", ATTRS{name}=="ThinkPad Extra Buttons", RUN+="keymap $name module-lenovo"
++ENV{DMI_VENDOR}=="LENOVO*", KERNELS=="input*", ATTRS{name}=="Lenovo ThinkPad SL Series extra buttons", RUN+="keymap $name 0x0E bluetooth"
+ ENV{DMI_VENDOR}=="ASUS*", KERNELS=="input*", ATTRS{name}=="Asus Extra Buttons", ATTR{[dmi/id]product_name}=="W3J", RUN+="keymap $name module-asus-w3j"
+ ENV{DMI_VENDOR}=="Sony*", KERNELS=="input*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony"
+ 
+ # Older Vaios have some different keys
+-ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*|*VGN-SZ2HP_B*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"
++ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"
+ 
+ #
+ # The following rules belong to standard i8042 AT keyboard with high key codes.
+@@ -53,19 +58,22 @@
+ LABEL="keyboard_vendorcheck"
+ 
+ ENV{DMI_VENDOR}=="Dell*", RUN+="keymap $name dell"
+-ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 1011", RUN+="keymap $name 0x84 wlan"
++ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 910|Inspiron 1010|Inspiron 1011|Inspiron 1012|Inspiron 1110|Inspiron 1210", RUN+="keymap $name 0x84 wlan"
+ 
+ ENV{DMI_VENDOR}=="Compaq*", ATTR{[dmi/id]product_name}=="*E500*|*Evo N*", RUN+="keymap $name compaq-e_evo"
+ 
+ ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*3000*", RUN+="keymap $name lenovo-3000"
+ ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X6*", ATTR{[dmi/id]product_version}=="* Tablet" RUN+="keymap $name lenovo-thinkpad_x6_tablet"
+ ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X200 Tablet*", ATTR{[dmi/id]product_version}=="* Tablet" RUN+="keymap $name lenovo-thinkpad_x200_tablet"
++ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*IdeaPad*", RUN+="keymap $name lenovo-ideapad"
++ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_name}=="S10-*", RUN+="keymap $name lenovo-ideapad"
++ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*IdeaPad Y550*", RUN+="keymap $name 0x95 media 0xA3 play"
+ 
+ ENV{DMI_VENDOR}=="Hewlett-Packard*", RUN+="keymap $name hewlett-packard"
+ ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][aA][bB][lL][eE][tT]*", RUN+="keymap $name hewlett-packard-tablet"
+ ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[pP][aA][vV][iI][lL][iI][oO][nN]*", RUN+="keymap $name hewlett-packard-pavilion"
+ ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*Compaq*|*EliteBook*|*2230s*", RUN+="keymap $name hewlett-packard-compaq_elitebook"
+-ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*", RUN+="keymap $name hewlett-packard-2510p_2530p"
++ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*|HP G60 Notebook PC", RUN+="keymap $name hewlett-packard-2510p_2530p"
+ ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][xX]2*", RUN+="keymap $name hewlett-packard-tx2"
+ ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="Presario 2100*", RUN+="keymap $name hewlett-packard-presario-2100"
+ # HP Pavillion dv6315ea has empty DMI_VENDOR
+@@ -77,7 +85,8 @@
+ ENV{DMI_VENDOR}=="Acer*", RUN+="keymap $name acer"
+ ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Extensa*", ATTR{[dmi/id]product_name}=="*5210*|*5220*|*5610*|*5620*|*5720*", RUN+="keymap $name 0xEE screenlock"
+ ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*C300*", RUN+="keymap $name acer-travelmate_c300"
+-ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*6292*|TravelMate*8471*|Aspire 1810T*|AO751h|AO531h", RUN+="keymap $name 0xD9 bluetooth"
++ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*6292*|TravelMate*8471*|TravelMate*4720*|Aspire 1810T*|AO751h|AO531h", RUN+="keymap $name 0xD9 bluetooth"
++ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*4720*", RUN+="keymap $name 0xB2 www 0xEE screenlock"
+ ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate 6593|Aspire 1640", RUN+="keymap $name 0xB2 www 0xEE screenlock"
+ ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 6920", RUN+="keymap $name acer-aspire_6920"
+ ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 5920G", RUN+="keymap $name acer-aspire_5920g"
+@@ -110,7 +119,7 @@
+ 
+ ENV{DMI_VENDOR}=="MAXDATA", ATTR{[dmi/id]product_name}=="Pro 7000*", RUN+="keymap $name maxdata-pro_7000"
+ 
+-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N128*|*N130*|*N210*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
++ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", RUN+="keymap $name samsung-other"
+ ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s"
+ ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us"
+ 
+@@ -120,6 +129,8 @@
+ 
+ ENV{DMI_VENDOR}=="OQO Inc.*", ATTR{[dmi/id]product_name}=="OQO Model 2*", RUN+="keymap $name oqo-model2"
+ 
++ENV{DMI_VENDOR}=="ONKYO CORPORATION", ATTR{[dmi/id]product_name}=="ONKYOPC", RUN+="keymap $name onkyo"
++
+ ENV{DMI_VENDOR}=="ASUS", RUN+="keymap $name asus"
+ 
+ ENV{DMI_VENDOR}=="VIA", ATTR{[dmi/id]product_name}=="K8N800", ATTR{[dmi/id]product_version}=="VT8204B", RUN+="keymap $name 0x81 prog1"
+diff -urN udev-153-orig/extras/keymap/findkeyboards udev-153/extras/keymap/findkeyboards
+--- udev-153-orig/extras/keymap/findkeyboards	2009-12-15 12:49:25.000000000 +0100
++++ udev-153/extras/keymap/findkeyboards	2010-07-08 11:37:47.000000000 +0200
+@@ -34,6 +34,8 @@
+     # modules
+     module=`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*Extra Buttons'`
+     module="$module
++`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*extra buttons'`"
++    module="$module
+ `udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='Sony Vaio Keys'`"
+     for m in $module; do
+ 	evdev=`ls -d $m/event* 2>/dev/null`
+diff -urN udev-153-orig/extras/keymap/.gitignore udev-153/extras/keymap/.gitignore
+--- udev-153-orig/extras/keymap/.gitignore	1970-01-01 01:00:00.000000000 +0100
++++ udev-153/extras/keymap/.gitignore	2010-03-18 16:44:52.000000000 +0100
+@@ -0,0 +1,6 @@
++keymap
++keys-from-name.gperf
++keys-from-name.h
++keys-to-name.h
++keys.txt
++
+diff -urN udev-153-orig/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint udev-153/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint
+--- udev-153-orig/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint	1970-01-01 01:00:00.000000000 +0100
++++ udev-153/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint	2010-07-07 10:58:29.000000000 +0200
+@@ -0,0 +1,7 @@
++0x900f0 screenlock
++0x900f1 wlan
++0x900f2 switchvideomode
++0x900f3 suspend
++0x900f4 brightnessup
++0x900f5 brightnessdown
++0x900f8 zoom
+diff -urN udev-153-orig/extras/keymap/keymaps/lenovo-ideapad udev-153/extras/keymap/keymaps/lenovo-ideapad
+--- udev-153-orig/extras/keymap/keymaps/lenovo-ideapad	1970-01-01 01:00:00.000000000 +0100
++++ udev-153/extras/keymap/keymaps/lenovo-ideapad	2010-08-17 16:31:27.000000000 +0200
+@@ -0,0 +1,7 @@
++# Key codes observed on S10-3, assumed valid on other IdeaPad models
++0x81 rfkill			# does nothing in BIOS
++0x83 display_off		# BIOS toggles screen state
++0xB9 brightnessup		# does nothing in BIOS
++0xBA brightnessdown		# does nothing in BIOS
++0xF1 camera			# BIOS toggles camera power
++0xf2 unknown			# trackpad enable/disable (does nothing in BIOS)
+diff -urN udev-153-orig/extras/keymap/keymaps/logitech-wave-pro-cordless udev-153/extras/keymap/keymaps/logitech-wave-pro-cordless
+--- udev-153-orig/extras/keymap/keymaps/logitech-wave-pro-cordless	1970-01-01 01:00:00.000000000 +0100
++++ udev-153/extras/keymap/keymaps/logitech-wave-pro-cordless	2010-07-07 10:58:29.000000000 +0200
+@@ -0,0 +1,12 @@
++0xC01B6 camera
++0xC0183 media
++0xC0184 wordprocessor
++0xC0186 spreadsheet
++0xC018E calendar
++0xC0223 homepage
++0xC01BC messenger
++0xC018A mail
++0xC0221 search
++0xC00B8 ejectcd
++0xC022D zoomin
++0xC022E zoomout
+diff -urN udev-153-orig/extras/keymap/keymaps/micro-star udev-153/extras/keymap/keymaps/micro-star
+--- udev-153-orig/extras/keymap/keymaps/micro-star	2009-12-03 13:45:03.000000000 +0100
++++ udev-153/extras/keymap/keymaps/micro-star	2010-06-11 10:52:56.000000000 +0200
+@@ -6,6 +6,7 @@
+ 0xE2 bluetooth # satellite dish2
+ 0xE4 f22 # Fn-F3   Touchpad disable
+ 0xEC email # envelope button
++0xEE camera # Fn-F6 camera disable
+ 0xF6 wlan # satellite dish1
+ 0xF7 brightnessdown # Fn-F4
+ 0xF8 brightnessup # Fn-F5
+diff -urN udev-153-orig/extras/keymap/keymaps/onkyo udev-153/extras/keymap/keymaps/onkyo
+--- udev-153-orig/extras/keymap/keymaps/onkyo	1970-01-01 01:00:00.000000000 +0100
++++ udev-153/extras/keymap/keymaps/onkyo	2010-08-31 10:35:41.000000000 +0200
+@@ -0,0 +1,14 @@
++0xA0 mute # Fn+D
++0xAE volumedown # Fn+F
++0xB0 volumeup # Fn+G
++0xDF sleep # Fn+W
++0xE0 bluetooth # Fn+H
++0xE2 cyclewindows # Fn+Esc
++0xEE battery # Fn+Q
++0xF0 media # Fn+R
++0xF5 switchvideomode # Fn+E
++0xF6 camera # Fn+T
++0xF7 f22 # Fn+Y (touchpad toggle)
++0xF8 brightnessup # Fn+S
++0xF9 brightnessdown # Fn+A
++0xFB wlan # Fn+J


More information about the scm-commits mailing list