This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/TCA8418: Mutliple Keys press events are received.

Part Number: TCA8418

Tool/software: Linux

hi,

I have a keypad matrix 4 rows and 3 cols and 6 function keys as single input (only the 4x3 keys work, the F1-F6 are not working

I have successfully connected our custom board to our custom PCB. I can see the dmesg and it linked to event0

I can run evtest successfully but when I press some buttons (4x3 keys), I see keys events I don't expect. I attached the evtest below. Is there an error in my hardware board schematic? Am I missing something?

keys 1, 4, 7, * all work great

keys 2, 5, 8, 0 show an extra key (previous column)

keys 3, 6, 9, enter show two extra keys (previous 2 columns) for each press

I will attach my keypad schematic. what I am looking for from this forum is to determine if my hardware schematic is correct for the TCA8418 or is there an error (missing pull up resistor or likes). I also don't like the way the designer direct connected F1-F6 and may we just make a 3x6 matrix for all items.

thanks,

Zev.

evtest output

-----------------

root@var-som-mx6:~# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      tca8418
/dev/input/event1:      Logitech USB Optical Mouse
/dev/input/event2:      gpio-keys
Select the device event number [0-2]: 0
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x1 product 0x1 version 0x1
Input device name: "tca8418"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 28 (KEY_ENTER)
    Event code 59 (KEY_F1)
    Event code 60 (KEY_F2)
    Event code 61 (KEY_F3)
    Event code 62 (KEY_F4)
    Event code 63 (KEY_F5)
    Event code 64 (KEY_F6)
    Event code 512 (KEY_NUMERIC_0)
    Event code 513 (KEY_NUMERIC_1)
    Event code 514 (KEY_NUMERIC_2)
    Event code 515 (KEY_NUMERIC_3)
    Event code 516 (KEY_NUMERIC_4)
    Event code 517 (KEY_NUMERIC_5)
    Event code 518 (KEY_NUMERIC_6)
    Event code 519 (KEY_NUMERIC_7)
    Event code 520 (KEY_NUMERIC_8)
    Event code 521 (KEY_NUMERIC_9)
    Event code 522 (KEY_NUMERIC_STAR)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
pressing number 1
Event: time 1545109317.211748, type 4 (EV_MSC), code 4 (MSC_SCAN), value 02
Event: time 1545109317.211748, type 1 (EV_KEY), code 513 (KEY_NUMERIC_1), value 1
Event: time 1545109317.211748, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03
Event: time 1545109317.211748, type 4 (EV_MSC), code 4 (MSC_SCAN), value 04
Event: time 1545109317.211748, -------------- SYN_REPORT ------------
Event: time 1545109317.397339, type 4 (EV_MSC), code 4 (MSC_SCAN), value 02
Event: time 1545109317.397339, type 1 (EV_KEY), code 513 (KEY_NUMERIC_1), value 0
Event: time 1545109317.397339, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03
Event: time 1545109317.397339, type 4 (EV_MSC), code 4 (MSC_SCAN), value 04
Event: time 1545109317.397339, -------------- SYN_REPORT ------------

pressing number 2
Event: time 1545109328.440710, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1545109328.440710, type 1 (EV_KEY), code 514 (KEY_NUMERIC_2), value 1
Event: time 1545109328.440710, type 4 (EV_MSC), code 4 (MSC_SCAN), value 02
Event: time 1545109328.440710, type 1 (EV_KEY), code 513 (KEY_NUMERIC_1), value 1
Event: time 1545109328.440710, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03
Event: time 1545109328.440710, -------------- SYN_REPORT ------------
Event: time 1545109328.579526, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1545109328.579526, type 1 (EV_KEY), code 514 (KEY_NUMERIC_2), value 0
Event: time 1545109328.579526, type 4 (EV_MSC), code 4 (MSC_SCAN), value 02
Event: time 1545109328.579526, type 1 (EV_KEY), code 513 (KEY_NUMERIC_1), value 0
Event: time 1545109328.579526, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03
Event: time 1545109328.579526, -------------- SYN_REPORT ------------

pressing number 3
Event: time 1545109337.702155, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00
Event: time 1545109337.702155, type 1 (EV_KEY), code 515 (KEY_NUMERIC_3), value 1
Event: time 1545109337.702155, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1545109337.702155, type 1 (EV_KEY), code 514 (KEY_NUMERIC_2), value 1
Event: time 1545109337.702155, type 4 (EV_MSC), code 4 (MSC_SCAN), value 02
Event: time 1545109337.702155, type 1 (EV_KEY), code 513 (KEY_NUMERIC_1), value 1
Event: time 1545109337.702155, -------------- SYN_REPORT ------------
Event: time 1545109337.887568, type 4 (EV_MSC), code 4 (MSC_SCAN), value 00
Event: time 1545109337.887568, type 1 (EV_KEY), code 515 (KEY_NUMERIC_3), value 0
Event: time 1545109337.887568, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1545109337.887568, type 1 (EV_KEY), code 514 (KEY_NUMERIC_2), value 0
Event: time 1545109337.887568, type 4 (EV_MSC), code 4 (MSC_SCAN), value 02
Event: time 1545109337.887568, type 1 (EV_KEY), code 513 (KEY_NUMERIC_1), value 0
Event: time 1545109337.887568, -------------- SYN_REPORT ------------

pressing number 4
Event: time 1545109348.313482, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1545109348.313482, type 1 (EV_KEY), code 516 (KEY_NUMERIC_4), value 1
Event: time 1545109348.313482, type 4 (EV_MSC), code 4 (MSC_SCAN), value 13
Event: time 1545109348.313482, type 4 (EV_MSC), code 4 (MSC_SCAN), value 14
Event: time 1545109348.313482, -------------- SYN_REPORT ------------
Event: time 1545109348.475754, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1545109348.475754, type 1 (EV_KEY), code 516 (KEY_NUMERIC_4), value 0
Event: time 1545109348.475754, type 4 (EV_MSC), code 4 (MSC_SCAN), value 13
Event: time 1545109348.475754, type 4 (EV_MSC), code 4 (MSC_SCAN), value 14
Event: time 1545109348.475754, -------------- SYN_REPORT ------------

pressing number 5
Event: time 1545109359.762071, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11
Event: time 1545109359.762071, type 1 (EV_KEY), code 517 (KEY_NUMERIC_5), value 1
Event: time 1545109359.762071, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1545109359.762071, type 1 (EV_KEY), code 516 (KEY_NUMERIC_4), value 1
Event: time 1545109359.762071, type 4 (EV_MSC), code 4 (MSC_SCAN), value 13
Event: time 1545109359.762071, -------------- SYN_REPORT ------------
Event: time 1545109359.901037, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11
Event: time 1545109359.901037, type 1 (EV_KEY), code 517 (KEY_NUMERIC_5), value 0
Event: time 1545109359.901037, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1545109359.901037, type 1 (EV_KEY), code 516 (KEY_NUMERIC_4), value 0
Event: time 1545109359.901037, type 4 (EV_MSC), code 4 (MSC_SCAN), value 13
Event: time 1545109359.901037, -------------- SYN_REPORT ------------

pressing number 6
Event: time 1545109370.390124, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10
Event: time 1545109370.390124, type 1 (EV_KEY), code 518 (KEY_NUMERIC_6), value 1
Event: time 1545109370.390124, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11
Event: time 1545109370.390124, type 1 (EV_KEY), code 517 (KEY_NUMERIC_5), value 1
Event: time 1545109370.390124, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1545109370.390124, type 1 (EV_KEY), code 516 (KEY_NUMERIC_4), value 1
Event: time 1545109370.390124, -------------- SYN_REPORT ------------
Event: time 1545109370.575728, type 4 (EV_MSC), code 4 (MSC_SCAN), value 10
Event: time 1545109370.575728, type 1 (EV_KEY), code 518 (KEY_NUMERIC_6), value 0
Event: time 1545109370.575728, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11
Event: time 1545109370.575728, type 1 (EV_KEY), code 517 (KEY_NUMERIC_5), value 0
Event: time 1545109370.575728, type 4 (EV_MSC), code 4 (MSC_SCAN), value 12
Event: time 1545109370.575728, type 1 (EV_KEY), code 516 (KEY_NUMERIC_4), value 0
Event: time 1545109370.575728, -------------- SYN_REPORT ------------

pressing number 7
Event: time 1545109379.717056, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1545109379.717056, type 1 (EV_KEY), code 519 (KEY_NUMERIC_7), value 1
Event: time 1545109379.717056, type 4 (EV_MSC), code 4 (MSC_SCAN), value 23
Event: time 1545109379.717056, type 4 (EV_MSC), code 4 (MSC_SCAN), value 24
Event: time 1545109379.717056, -------------- SYN_REPORT ------------
Event: time 1545109379.925596, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1545109379.925596, type 1 (EV_KEY), code 519 (KEY_NUMERIC_7), value 0
Event: time 1545109379.925596, type 4 (EV_MSC), code 4 (MSC_SCAN), value 23
Event: time 1545109379.925596, type 4 (EV_MSC), code 4 (MSC_SCAN), value 24
Event: time 1545109379.925596, -------------- SYN_REPORT ------------

prssing number 8
Event: time 1545109387.805598, type 4 (EV_MSC), code 4 (MSC_SCAN), value 21
Event: time 1545109387.805598, type 1 (EV_KEY), code 520 (KEY_NUMERIC_8), value 1
Event: time 1545109387.805598, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1545109387.805598, type 1 (EV_KEY), code 519 (KEY_NUMERIC_7), value 1
Event: time 1545109387.805598, type 4 (EV_MSC), code 4 (MSC_SCAN), value 23
Event: time 1545109387.805598, -------------- SYN_REPORT ------------
Event: time 1545109387.990950, type 4 (EV_MSC), code 4 (MSC_SCAN), value 21
Event: time 1545109387.990950, type 1 (EV_KEY), code 520 (KEY_NUMERIC_8), value 0
Event: time 1545109387.990950, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1545109387.990950, type 1 (EV_KEY), code 519 (KEY_NUMERIC_7), value 0
Event: time 1545109387.990950, type 4 (EV_MSC), code 4 (MSC_SCAN), value 23
Event: time 1545109387.990950, -------------- SYN_REPORT ------------

pressing number 9
Event: time 1545109396.270974, type 4 (EV_MSC), code 4 (MSC_SCAN), value 20
Event: time 1545109396.270974, type 1 (EV_KEY), code 521 (KEY_NUMERIC_9), value 1
Event: time 1545109396.270974, type 4 (EV_MSC), code 4 (MSC_SCAN), value 21
Event: time 1545109396.270974, type 1 (EV_KEY), code 520 (KEY_NUMERIC_8), value 1
Event: time 1545109396.270974, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1545109396.270974, type 1 (EV_KEY), code 519 (KEY_NUMERIC_7), value 1
Event: time 1545109396.270974, -------------- SYN_REPORT ------------
Event: time 1545109396.456231, type 4 (EV_MSC), code 4 (MSC_SCAN), value 20
Event: time 1545109396.456231, type 1 (EV_KEY), code 521 (KEY_NUMERIC_9), value 0
Event: time 1545109396.456231, type 4 (EV_MSC), code 4 (MSC_SCAN), value 21
Event: time 1545109396.456231, type 1 (EV_KEY), code 520 (KEY_NUMERIC_8), value 0
Event: time 1545109396.456231, type 4 (EV_MSC), code 4 (MSC_SCAN), value 22
Event: time 1545109396.456231, type 1 (EV_KEY), code 519 (KEY_NUMERIC_7), value 0
Event: time 1545109396.456231, -------------- SYN_REPORT ------------

pressing asterisk
Event: time 1545109408.351310, type 4 (EV_MSC), code 4 (MSC_SCAN), value 32
Event: time 1545109408.351310, type 1 (EV_KEY), code 522 (KEY_NUMERIC_STAR), value 1
Event: time 1545109408.351310, type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
Event: time 1545109408.351310, type 4 (EV_MSC), code 4 (MSC_SCAN), value 34
Event: time 1545109408.351310, -------------- SYN_REPORT ------------
Event: time 1545109408.559884, type 4 (EV_MSC), code 4 (MSC_SCAN), value 32
Event: time 1545109408.559884, type 1 (EV_KEY), code 522 (KEY_NUMERIC_STAR), value 0
Event: time 1545109408.559884, type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
Event: time 1545109408.559884, type 4 (EV_MSC), code 4 (MSC_SCAN), value 34
Event: time 1545109408.559884, -------------- SYN_REPORT ------------

pressing 0
Event: time 1545109417.783275, type 4 (EV_MSC), code 4 (MSC_SCAN), value 31
Event: time 1545109417.783275, type 1 (EV_KEY), code 512 (KEY_NUMERIC_0), value 1
Event: time 1545109417.783275, type 4 (EV_MSC), code 4 (MSC_SCAN), value 32
Event: time 1545109417.783275, type 1 (EV_KEY), code 522 (KEY_NUMERIC_STAR), value 1
Event: time 1545109417.783275, type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
Event: time 1545109417.783275, -------------- SYN_REPORT ------------
Event: time 1545109417.968590, type 4 (EV_MSC), code 4 (MSC_SCAN), value 31
Event: time 1545109417.968590, type 1 (EV_KEY), code 512 (KEY_NUMERIC_0), value 0
Event: time 1545109417.968590, type 4 (EV_MSC), code 4 (MSC_SCAN), value 32
Event: time 1545109417.968590, type 1 (EV_KEY), code 522 (KEY_NUMERIC_STAR), value 0
Event: time 1545109417.968590, type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
Event: time 1545109417.968590, -------------- SYN_REPORT ------------

pressing enter
Event: time 1545109429.240499, type 4 (EV_MSC), code 4 (MSC_SCAN), value 30
Event: time 1545109429.240499, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1
Event: time 1545109429.240499, type 4 (EV_MSC), code 4 (MSC_SCAN), value 31
Event: time 1545109429.240499, type 1 (EV_KEY), code 512 (KEY_NUMERIC_0), value 1
Event: time 1545109429.240499, type 4 (EV_MSC), code 4 (MSC_SCAN), value 32
Event: time 1545109429.240499, type 1 (EV_KEY), code 522 (KEY_NUMERIC_STAR), value 1
Event: time 1545109429.240499, -------------- SYN_REPORT ------------
Event: time 1545109429.402877, type 4 (EV_MSC), code 4 (MSC_SCAN), value 30
Event: time 1545109429.402877, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1545109429.402877, type 4 (EV_MSC), code 4 (MSC_SCAN), value 31
Event: time 1545109429.402877, type 1 (EV_KEY), code 512 (KEY_NUMERIC_0), value 0
Event: time 1545109429.402877, type 4 (EV_MSC), code 4 (MSC_SCAN), value 32
Event: time 1545109429.402877, type 1 (EV_KEY), code 522 (KEY_NUMERIC_STAR), value 0
Event: time 1545109429.402877, -------------- SYN_REPORT ------------

pressing F1
thru F6 do nothing
^Croot@var-som-mx6:~#
my device tree mapping on i2c
-------------------
 keypad: tca8418@34 {
        compatible = "ti,tca8418";
        reg = <0x34>;
        row-output-enabled;
        col-debounce-filter-period = <5>;
        pull-up-enabled;
        debounce-delay-ms = <4>;
         interrupt-parent = <&gpio5>;
         interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
         keypad,num-columns = <10>;Schematic_KEYPAD.pdf         keypad,num-rows = <8>;
         linux,no-autorepeat;
 linux,keymap = <
       MATRIX_KEY(0x00, 0x02, KEY_NUMERIC_1) /*ROW0, COLUMN2*/
       MATRIX_KEY(0x00, 0x01, KEY_NUMERIC_2) /*ROW0, COLUMN1*/
                     MATRIX_KEY(0x00, 0x00, KEY_NUMERIC_3) /*ROW0, COLUMN0*/
 
                     MATRIX_KEY(0x01, 0x02, KEY_NUMERIC_4)  /*ROW1, COLUMN2*/
                     MATRIX_KEY(0x01, 0x01, KEY_NUMERIC_5)  /*ROW1, COLUMN1*/
                     MATRIX_KEY(0x01, 0x00, KEY_NUMERIC_6) /*ROW1, COLUMN0*/
 
                     MATRIX_KEY(0x02, 0x02, KEY_NUMERIC_7)  /*ROW2, COLUMN2*/
                     MATRIX_KEY(0x02, 0x01, KEY_NUMERIC_8)  /*ROW2, COLUMN1*/
                     MATRIX_KEY(0x02, 0x00, KEY_NUMERIC_9)  /*ROW2, COLUMN0*/
 
                     MATRIX_KEY(0x03, 0x02, KEY_NUMERIC_STAR)  /*ROW3, COLUMN2*/
                     MATRIX_KEY(0x03, 0x01, KEY_NUMERIC_0)  /*ROW3, COLUMN1*/
                     MATRIX_KEY(0x03, 0x00, KEY_ENTER)       /*ROW3, COLUMN0*/
 
                     MATRIX_KEY(0x07, 0x04, KEY_F1) /*ROW4, COLUMN4*/
                     MATRIX_KEY(0x07, 0x05, KEY_F2) /*ROW4, COLUMN5*/
                     MATRIX_KEY(0x07, 0x06, KEY_F3) /*ROW4, COLUMN6*/
                     MATRIX_KEY(0x07, 0x07, KEY_F4) /*ROW4, COLUMN7*/
       MATRIX_KEY(0x07, 0x08, KEY_F5) /*ROW4, COLUMN8*/
        MATRIX_KEY(0x07, 0x09, KEY_F6) /*ROW4, COLUMN9*/
        >;
              
 };