From 282d7b1a90bd607742e76dd49f9fea572fb9fae9 Mon Sep 17 00:00:00 2001 From: Hamish Coleman Date: Tue, 28 Jun 2016 15:06:50 +1000 Subject: [PATCH] Add live/dead description --- docs/table_matrix.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/table_matrix.txt b/docs/table_matrix.txt index f763c08..2668e31 100644 --- a/docs/table_matrix.txt +++ b/docs/table_matrix.txt @@ -18,7 +18,10 @@ with the second half of each row being unused (except for one anomaly) This corresponds to the physical hardware, which uses 16 "drive" lines and 8 "sense" lines - with one extra row, probably for some software keys. - 0 1 2 3 4 5 6 7 +The hardware "drive" line forms the row number and the "sense" line forms +the column number. + + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 matrix[ 0]: 01 02 11 10 1f 6e 2e 83 ` 1 Q TAB A Esc Z ?? matrix[ 1]: 70 03 12 1e 20 2d 2f 00 F1 2 W CpLk S (|) X @@ -52,7 +55,8 @@ with updating the live/dead key table. (source: x230 EC firmware version 8DHT34WW, offset 0x218d8) - 0 1 2 3 4 5 6 7 + 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 + matrix[ 0]: 01 02 11 10 1f 6e 2e 83 ` 1 Q TAB A Esc Z ?? matrix[ 1]: 70 03 12 1e 20 2d 2f 00 F1 2 W CpLk S (|) X matrix[ 2]: 71 04 13 72 21 73 30 00 F2 3 E F3 D F4 C @@ -74,14 +78,20 @@ matrix[15][15] = 0x96 ?? matrix[16]: 00 9d 00 9e 9f 4a 3a 9c WinR? Pwr? Slp? Wak? CtlL Menu matrix[16][8] 7d 7e 00 00 00 00 00 00 ScLk Paus -ThinkPad x230 live/dead table: ------------------------------- +ThinkPad x230 live/dead bitmap: +------------------------------- Again, this table is shared with all of the xx30 series laptops. There is a similar table in the x220 EC firmware, but with a different endianess (as a result of the different embedded controller used in the x220) -TODO: add description +The live/dead bitmap is an array of 16 words, each word being 16 bits long. +Each detected keypress is looked up in this array - the "drive" line is used +as the index into the array and the "sense" line is the bit number in that +word. If the bit at that location is set, then the keypress is considered +a "live" key and the value from the matrix table is used as the embedded +controller scancode of the key pressed (Note that this scancode is internal +to the EC - it is not the same as the BIOS scancode) (source: x230 EC firmware version 8DHT34WW, offset 0x219e8)