summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajat Jain <rajatja@google.com>2020-04-15 16:56:32 -0700
committerCommit Bot <commit-bot@chromium.org>2020-04-21 21:32:52 +0000
commit4a585f797d11d8ac452eeb11050c33ecac29181a (patch)
treedbad1035b8c76a962a748b893b5c509692995edb
parent9ca749eb1a57a7e8c705ec0f11ab992d8394cc37 (diff)
downloadchrome-ec-4a585f797d11d8ac452eeb11050c33ecac29181a.tar.gz
common/vivaldi: Make the "Alt+VolUp+r" work on vivaldi keyboards
Since the VolUp button location can vary now, take that into account. Signed-off-by: Rajat Jain <rajatja@google.com> BUG=b:146501925,b:154167876 TEST=TEst Alt + VolUp + r on Jinlon BRANCH=firmware-hatch-12672.B Change-Id: I4dbc8692f6418fd786e5d33053e8c368cc5529ac Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2151854 Commit-Queue: Rajat Jain <rajatja@google.com> Tested-by: Rajat Jain <rajatja@google.com> Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r--board/palkia/keyboard_customization.h5
-rw-r--r--common/keyboard_scan.c14
-rw-r--r--common/keyboard_vivaldi.c4
-rw-r--r--include/keyboard_config.h5
-rw-r--r--include/keyboard_scan.h6
5 files changed, 27 insertions, 7 deletions
diff --git a/board/palkia/keyboard_customization.h b/board/palkia/keyboard_customization.h
index bb19acd0e7..37ce1cf61f 100644
--- a/board/palkia/keyboard_customization.h
+++ b/board/palkia/keyboard_customization.h
@@ -46,9 +46,8 @@ extern uint8_t keyboard_cols;
#define KEYBOARD_COL_RIGHT_ALT 3
#define KEYBOARD_ROW_RIGHT_ALT 0
#define KEYBOARD_MASK_RIGHT_ALT KEYBOARD_ROW_TO_MASK(KEYBOARD_ROW_RIGHT_ALT)
-#define KEYBOARD_COL_VOL_UP 8
-#define KEYBOARD_ROW_VOL_UP 4
-#define KEYBOARD_MASK_VOL_UP KEYBOARD_ROW_TO_MASK(KEYBOARD_ROW_VOL_UP)
+#define KEYBOARD_DEFAULT_COL_VOL_UP 8
+#define KEYBOARD_DEFAULT_ROW_VOL_UP 4
#define KEYBOARD_COL_LEFT_CTRL 12
#define KEYBOARD_ROW_LEFT_CTRL 1
#define KEYBOARD_MASK_LEFT_CTRL KEYBOARD_ROW_TO_MASK(KEYBOARD_ROW_LEFT_CTRL)
diff --git a/common/keyboard_scan.c b/common/keyboard_scan.c
index 6e79878ce7..5e147a1f46 100644
--- a/common/keyboard_scan.c
+++ b/common/keyboard_scan.c
@@ -344,6 +344,18 @@ static void read_matrix_id(uint8_t *id)
#endif
#ifdef CONFIG_KEYBOARD_RUNTIME_KEYS
+
+static uint8_t key_vol_up_row = KEYBOARD_DEFAULT_ROW_VOL_UP;
+static uint8_t key_vol_up_col = KEYBOARD_DEFAULT_COL_VOL_UP;
+
+void set_vol_up_key(uint8_t row, uint8_t col)
+{
+ if (col < KEYBOARD_COLS_MAX && row < KEYBOARD_ROWS) {
+ key_vol_up_row = row;
+ key_vol_up_col = col;
+ }
+}
+
/**
* Check special runtime key combinations.
*
@@ -401,7 +413,7 @@ static int check_runtime_keys(const uint8_t *state)
* All runtime key combos are (right or left ) alt + volume up + (some
* key NOT on the same col as alt or volume up )
*/
- if (state[KEYBOARD_COL_VOL_UP] != KEYBOARD_MASK_VOL_UP)
+ if (state[key_vol_up_col] != KEYBOARD_ROW_TO_MASK(key_vol_up_row))
return 0;
if (state[KEYBOARD_COL_RIGHT_ALT] != KEYBOARD_MASK_RIGHT_ALT &&
diff --git a/common/keyboard_vivaldi.c b/common/keyboard_vivaldi.c
index 28c7dc4523..46360187e4 100644
--- a/common/keyboard_vivaldi.c
+++ b/common/keyboard_vivaldi.c
@@ -140,6 +140,10 @@ static void vivaldi_init(void)
set_scancode_set2(row, col, action_scancodes[key]);
CPRINTS("VIVALDI key-%u (r-%u, c-%u) = scancode-%X",
i, row, col, action_scancodes[key]);
+
+ if (key == TK_VOL_UP)
+ set_vol_up_key(row, col);
+
} else {
/* Disable the mask */
*mask &= ~BIT(row);
diff --git a/include/keyboard_config.h b/include/keyboard_config.h
index ed78adf67f..2e6a6eb80d 100644
--- a/include/keyboard_config.h
+++ b/include/keyboard_config.h
@@ -69,9 +69,8 @@ extern uint8_t keyboard_cols;
#define KEYBOARD_COL_RIGHT_ALT 10
#define KEYBOARD_ROW_RIGHT_ALT 0
#define KEYBOARD_MASK_RIGHT_ALT KEYBOARD_ROW_TO_MASK(KEYBOARD_ROW_RIGHT_ALT)
-#define KEYBOARD_COL_VOL_UP 4
-#define KEYBOARD_ROW_VOL_UP 0
-#define KEYBOARD_MASK_VOL_UP KEYBOARD_ROW_TO_MASK(KEYBOARD_ROW_VOL_UP)
+#define KEYBOARD_DEFAULT_COL_VOL_UP 4
+#define KEYBOARD_DEFAULT_ROW_VOL_UP 0
#define KEYBOARD_COL_LEFT_CTRL 0
#define KEYBOARD_ROW_LEFT_CTRL 2
#define KEYBOARD_MASK_LEFT_CTRL KEYBOARD_ROW_TO_MASK(KEYBOARD_ROW_LEFT_CTRL)
diff --git a/include/keyboard_scan.h b/include/keyboard_scan.h
index 413ba20178..e74bfcea33 100644
--- a/include/keyboard_scan.h
+++ b/include/keyboard_scan.h
@@ -129,4 +129,10 @@ void keyboard_suppress_noise(void);
int keyboard_get_keyboard_id(void);
#endif
+#ifdef CONFIG_KEYBOARD_RUNTIME_KEYS
+void set_vol_up_key(uint8_t row, uint8_t col);
+#else
+static inline void set_vol_up_key(uint8_t row, uint8_t col) {}
+#endif
+
#endif /* __CROS_EC_KEYBOARD_SCAN_H */