[PATCH] use function for generation of keyrelease events

From: Daniel Mierswa
Date: Sun Nov 30 2008 - 07:14:00 EST


---
drivers/input/keyboard/atkbd.c | 27 +++++++++++++++++----------
1 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 22016ca..c239745 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -834,6 +834,19 @@ static void atkbd_disconnect(struct serio *serio)
}

/*
+ * generate release events for the keycodes given in keys[]
+ */
+static void atkbd_gen_release_event(struct atkbd* atkbd, const unsigned int *keys,
+ unsigned int nr_keys)
+{
+ unsigned int i;
+
+ if (atkbd->set == 2)
+ for (i = 0; i < nr_keys; i++)
+ __set_bit(keys[i], atkbd->force_release_mask);
+}
+
+/*
* Most special keys (Fn+F?) on Dell laptops do not generate release
* events so we have to do it ourselves.
*/
@@ -842,12 +855,9 @@ 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,
};
- int i;

- if (atkbd->set == 2)
- for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
- __set_bit(forced_release_keys[i],
- atkbd->force_release_mask);
+ atkbd_gen_release_event(atkbd, forced_release_keys,
+ ARRAY_SIZE(forced_release_keys));
}

/*
@@ -859,12 +869,9 @@ static void atkbd_hp_keymap_fixup(struct atkbd *atkbd)
const unsigned int forced_release_keys[] = {
0x94,
};
- int i;

- if (atkbd->set == 2)
- for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
- __set_bit(forced_release_keys[i],
- atkbd->force_release_mask);
+ atkbd_gen_release_event(atkbd, forced_release_keys,
+ ARRAY_SIZE(forced_release_keys));
}

/*
--
1.6.0.4




--------------030706030401000601040400--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/