This is a kernel problem that affects Dell laptops. It has been fixed upstream by Matthew Garrett. The issue is that some keys on a Dell laptop do not produce a key down, key up sequence when the button is pressed, and instead just produce key down and NOT key up. This confuses X greatly, as more and more keys are being pressed "together". This is fixed in 61579ba83934d397a4fa2bb7372de9ae112587d5 on 15th August in Linus' tree.
Author: Matthew Garrett <email address hidden>
Date: Fri Aug 15 13:54:51 2008 -0400
Input: atkbd - expand Latitude's force release quirk to other Dells
Dell laptops fail to send key up events for several of their special
keys. There's an existing quirk in the kernel to handle this, but it's
limited to the Latitude range. This patch extends it to cover all
portable Dells.
/*
- * Most special keys (Fn+F?) on Dell Latitudes do not generate release
+ * Most special keys (Fn+F?) on Dell laptops do not generate release
* events so we have to do it ourselves.
*/
-static void atkbd_latitude_keymap_fixup(struct atkbd *atkbd)
+static void atkbd_dell_laptop_keymap_fixup(struct atkbd *atkbd)
{
const unsigned int forced_release_keys[] = { 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93,
@@ -1451,13 +1451,13 @@ static int __init atkbd_setup_fixup(const struct dmi_system_id *id)
This is a kernel problem that affects Dell laptops. It has been fixed upstream by Matthew Garrett. The issue is that some keys on a Dell laptop do not produce a key down, key up sequence when the button is pressed, and instead just produce key down and NOT key up. This confuses X greatly, as more and more keys are being pressed "together". This is fixed in 61579ba83934d39 7a4fa2bb7372de9 ae112587d5 on 15th August in Linus' tree.
Author: Matthew Garrett <email address hidden>
Date: Fri Aug 15 13:54:51 2008 -0400
Input: atkbd - expand Latitude's force release quirk to other Dells
Dell laptops fail to send key up events for several of their special
keys. There's an existing quirk in the kernel to handle this, but it's
limited to the Latitude range. This patch extends it to cover all
portable Dells.
Signed-off-by: Matthew Garrett <email address hidden>
Signed-off-by: Dmitry Torokhov <email address hidden>
diff --git a/drivers/ input/keyboard/ atkbd.c b/drivers/ input/keyboard/ atkbd.c input/keyboard/ atkbd.c input/keyboard/ atkbd.c t(struct serio *serio)
index 4474572..22016ca 100644
--- a/drivers/
+++ b/drivers/
@@ -834,10 +834,10 @@ static void atkbd_disconnec
}
/* keymap_ fixup(struct atkbd *atkbd) laptop_ keymap_ fixup(struct atkbd *atkbd) release_ keys[] = {
0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93, fixup(const struct dmi_system_id *id)
- * Most special keys (Fn+F?) on Dell Latitudes do not generate release
+ * Most special keys (Fn+F?) on Dell laptops do not generate release
* events so we have to do it ourselves.
*/
-static void atkbd_latitude_
+static void atkbd_dell_
{
const unsigned int forced_
@@ -1451,13 +1451,13 @@ static int __init atkbd_setup_
static struct dmi_system_id atkbd_dmi_ quirk_table[ ] __initdata = {
.matches = {
DMI_ MATCH(DMI_ SYS_VENDOR, "Dell Inc."), DMI_PRODUCT_ NAME, "Latitude"), DMI_CHASSIS_ TYPE, "8"), /* Portable */
.callback = atkbd_setup_fixup, keymap_ fixup, laptop_ keymap_ fixup,
.ident = "HP 2133",
{
- .ident = "Dell Latitude series",
+ .ident = "Dell Laptop",
- DMI_MATCH(
+ DMI_MATCH(
},
- .driver_data = atkbd_latitude_
+ .driver_data = atkbd_dell_
},
{