Re: [PATCH v1] input: tegra-kbc: Add Function keymap.
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2011-02-09 08:49:55
On Tue, Feb 08, 2011 at 12:56:24PM -0800, riyer@nvidia.com wrote:
quoted hunk ↗ jump to hunk
From: Rakesh Iyer <redacted> Add Fn keymap support to allow for internal processing of Fn keys. Signed-off-by: Rakesh Iyer <redacted> --- Added support for Fn keymap within tegra keyboard driver. arch/arm/mach-tegra/include/mach/kbc.h | 1 + drivers/input/keyboard/tegra-kbc.c | 50 ++++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 3 deletions(-)diff --git a/arch/arm/mach-tegra/include/mach/kbc.h b/arch/arm/mach-tegra/include/mach/kbc.h index 66ad276..04c7798 100644 --- a/arch/arm/mach-tegra/include/mach/kbc.h +++ b/arch/arm/mach-tegra/include/mach/kbc.h@@ -57,5 +57,6 @@ struct tegra_kbc_platform_data { const struct matrix_keymap_data *keymap_data; bool wakeup; + bool use_fn_map; }; #endifdiff --git a/drivers/input/keyboard/tegra-kbc.c b/drivers/input/keyboard/tegra-kbc.c index ac471b7..9f7bd2e 100644 --- a/drivers/input/keyboard/tegra-kbc.c +++ b/drivers/input/keyboard/tegra-kbc.c@@ -60,7 +60,7 @@ #define KBC_KP_ENT1_0 0x34 #define KBC_ROW0_MASK_0 0x38 -#define KBC_ROW_SHIFT 3 +#define KBC_ROW_SHIFT 4 struct tegra_kbc { void __iomem *mmio;@@ -71,8 +71,9 @@ struct tegra_kbc { spinlock_t lock; unsigned int repoll_dly; unsigned long cp_dly_jiffies; + bool use_fn_map; const struct tegra_kbc_platform_data *pdata; - unsigned short keycode[KBC_MAX_KEY]; + unsigned short keycode[KBC_MAX_KEY * 2]; unsigned short current_keys[KBC_MAX_KPENT]; unsigned int num_pressed_keys; struct timer_list timer;@@ -107,6 +108,7 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(4, 5, KEY_V), KEY(4, 6, KEY_C), KEY(4, 7, KEY_SPACE), + KEY(4, 8, KEY_7), KEY(5, 0, KEY_9), KEY(5, 1, KEY_8),@@ -116,6 +118,10 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(5, 5, KEY_N), KEY(5, 6, KEY_B), KEY(5, 7, KEY_BACKSLASH), + KEY(5, 8, KEY_9), + KEY(5, 9, KEY_8), + KEY(5, 10, KEY_4), + KEY(5, 12, KEY_1),
I think Fn emulates keypad here, so KEY_KP9, KEY_KP8, etc.
quoted hunk ↗ jump to hunk
KEY(6, 0, KEY_MINUS), KEY(6, 1, KEY_0),@@ -125,6 +131,12 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(6, 5, KEY_K), KEY(6, 6, KEY_COMMA), KEY(6, 7, KEY_M), + KEY(6, 9, KEY_SLASH), + KEY(6, 10, KEY_6), + KEY(6, 11, KEY_5), + KEY(6, 12, KEY_3), + KEY(6, 13, KEY_2), + KEY(6, 15, KEY_0), KEY(7, 1, KEY_EQUAL), KEY(7, 2, KEY_RIGHTBRACE),@@ -143,6 +155,10 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(11, 3, KEY_SEMICOLON), KEY(11, 4, KEY_SLASH), KEY(11, 5, KEY_DOT), + KEY(11, 9, KEY_KPASTERISK), + KEY(11, 11, KEY_KPMINUS), + KEY(11, 12, KEY_KPPLUS), + KEY(11, 13, KEY_DOT), KEY(12, 0, KEY_F10), KEY(12, 1, KEY_F9),@@ -152,6 +168,7 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(12, 5, KEY_UP), KEY(12, 6, KEY_PRINT), KEY(12, 7, KEY_PAUSE), + KEY(12, 13, KEY_VOLUMEUP), KEY(13, 0, KEY_INSERT), KEY(13, 1, KEY_DELETE),@@ -160,6 +177,11 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(13, 5, KEY_RIGHT), KEY(13, 6, KEY_DOWN), KEY(13, 7, KEY_LEFT), + KEY(13, 11, KEY_HOME), + KEY(13, 12, KEY_END), + KEY(13, 13, KEY_BRIGHTNESSDOWN), + KEY(13, 14, KEY_VOLUMEDOWN), + KEY(13, 15, KEY_BRIGHTNESSUP), KEY(14, 0, KEY_F11), KEY(14, 1, KEY_F12),@@ -169,6 +191,9 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(14, 5, KEY_F3), KEY(14, 6, KEY_1), KEY(14, 7, KEY_F7), + KEY(14, 8, KEY_NUMLOCK), + KEY(14, 9, KEY_SCROLLLOCK), + KEY(14, 10, KEY_MUTE), KEY(15, 0, KEY_ESC), KEY(15, 1, KEY_GRAVE),@@ -178,6 +203,7 @@ static const u32 tegra_kbc_default_keymap[] = { KEY(15, 5, KEY_F2), KEY(15, 6, KEY_CAPSLOCK), KEY(15, 7, KEY_F6), + KEY(15, 12, KEY_QUESTION),
Not KEY_SLASH or similar? -- Dmitry