Re: [PATCH v3] input: tegra-kbc: Add Function keymap.
flat view
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2011-02-16 20:04:02
On Wed, Feb 16, 2011 at 11:51:18AM -0800, Rakesh Iyer wrote:
quoted
On Wed, Feb 09, 2011 at 11:44:40AM -0800, riyer@nvidia.com wrote:quoted
+ + /* + * If the platform uses Fn keymaps, translate keys on a Fn keypress. + * Function keycodes are KBC_MAX_COL apart from the plain keycodes. + */ + for (i = 0; (i < num_down) && fn_keypress; i++) { + scancodes[i] += KBC_MAX_COL;This should be KBC_MAX_KEY, isn't it?In my implementation (and in your change) each row contains both Plain and Fn translated keys. So Cols 0-7 correspond to the plain keys and Cols 8-15 correspond to the Fn keys. That's why we add KBC_MAX_COL to get to the Fn translation. This is using the logic from matrix_keypad.h keymap[MATRIX_SCAN_CODE(row, col, row_shift)] = code; and #define MATRIX_SCAN_CODE(row, col, row_shift) (((row) << (row_shift)) + (col)) I will address the latter part after this one is cleared up.
Ah, yes. However I think we should change this so that Fn adds more rows, not columns. This way you can properly limit keymap size and would not accept/report to userspace (via EVIOCG/SKEYCODE) scancodes that are not valid for given configuration. Do you agree? Thanks. -- Dmitry