[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