Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Unable to detect touch key in qt



  • Hello i'm using beagleboard x-15 with goodix touchscreen where touchscreen has a button which is mapped in linux as KEY_LEFTMETA .
    My application uses qt virtual keyboad with EGLFS Qt 5.9.6.
    I'm able to detect key and touchevents using evtest .
    I'm able to use touchscreen in qt environment but not able to detect key [KEY_LEFTMETA].
    Here is my evtest output

    root@am57xx-evm:~# evtest                                                                          
    No device specified, trying to scan all of /dev/input/event*                                       
    Available devices:                                                                                 
    /dev/input/event0:      Goodix Capacitive TouchScreen                                              
    Select the device event number [0-0]: 0                                                            
    Input driver version is 1.0.1                                                                      
    Input device ID: bus 0x18 vendor 0x416 product 0x3a0 version 0x1060                                
    Input device name: "Goodix Capacitive TouchScreen"                                                 
    Supported events:                                                                                  
      Event type 0 (EV_SYN)                                                                            
      Event type 1 (EV_KEY)                                                                            
        Event code 125 (KEY_LEFTMETA)                                                                  
        Event code 330 (BTN_TOUCH)                                                                     
      Event type 3 (EV_ABS)                                                                            
        Event code 0 (ABS_X)                                                                           
          Value    621                                                                                 
          Min        0                                                                                 
          Max     1280                                                                                 
        Event code 1 (ABS_Y)                                                                           
          Value    690                                                                                 
          Min        0                                                                                 
          Max      800                                                                                 
        Event code 47 (ABS_MT_SLOT)                                                                    
          Value      0                                                                                 
          Min        0                                                                                 
          Max        9                                                                                 
        Event code 48 (ABS_MT_TOUCH_MAJOR)                                                             
          Value      0                                                                                 
          Min        0                                                                                 
          Max      255                                                                                 
        Event code 50 (ABS_MT_WIDTH_MAJOR)                                                             
          Value      0                                                                                 
          Min        0                                                                                 
          Max      255                                                                                 
        Event code 53 (ABS_MT_POSITION_X)                                                              
          Value      0                                                                                 
          Min        0                                                                                 
          Max     1280                                                                                 
        Event code 54 (ABS_MT_POSITION_Y)                                                              
          Value      0                                                                                 
          Min        0                                                                                 
          Max      800                                                                                 
        Event code 57 (ABS_MT_TRACKING_ID)                                                             
          Value      0                                                                                 
          Min        0                                                                                 
          Max    65535                                                                                 
    Properties:                                                                                        
      Property type 1 (INPUT_PROP_DIRECT)                                                              
    Testing ... (interrupt to exit)                                                                    
    Event: time 1568630308.729659, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1                   
    Event: time 1568630308.729659, -------------- SYN_REPORT ------------                              
    Event: time 1568630308.959110, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0                   
    Event: time 1568630308.959110, -------------- SYN_REPORT ------------                              
    Event: time 1568630417.185487, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 6              
    Event: time 1568630417.185487, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 170             
    Event: time 1568630417.185487, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 679             
    Event: time 1568630417.185487, type 3 (EV_ABS), code 48 (ABS_MT_TOUCH_MAJOR), value 25             
    Event: time 1568630417.185487, type 3 (EV_ABS), code 50 (ABS_MT_WIDTH_MAJOR), value 25             
    Event: time 1568630417.185487, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1                      
    Event: time 1568630417.185487, type 3 (EV_ABS), code 0 (ABS_X), value 170                          
    Event: time 1568630417.185487, type 3 (EV_ABS), code 1 (ABS_Y), value 679                          
    Event: time 1568630417.185487, -------------- SYN_REPORT ------------                              
    Event: time 1568630417.260888, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1             
    Event: time 1568630417.260888, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0                      
    

    I've enabled qt.qpa.*=true in filter rules here is its output.

    qt.qpa.egldeviceintegration: EGL device integration plugin keys: ("eglfs_emu", "eglfs_kms")
    qt.qpa.egldeviceintegration: Using base device integration
    qt.qpa.input: evdevkeyboard: Using device discovery
    qt.qpa.input: udev device discovery for type QFlags<QDeviceDiscovery::QDeviceType>(Device_Keyboard)
    qt.qpa.input: Found matching devices ("/dev/input/event0")
    qt.qpa.input: Adding keyboard at "/dev/input/event0"
    qt.qpa.input: Try to create keyboard handler for "/dev/input/event0" ""
    qt.qpa.input: Opening keyboard at "/dev/input/event0"
    qt.qpa.input: Create keyboard handler with for device "/dev/input/event0"
    qt.qpa.input: Unload current keymap and restore built-in
    qt.qpa.input: numlock=0 , capslock=0, scrolllock=0
    qt.qpa.input: evdevmouse: Using device discovery
    qt.qpa.input: udev device discovery for type QFlags<QDeviceDiscovery::QDeviceType>(Device_Mouse|Device_Touchpad)
    qt.qpa.input: Found matching devices ()
    qt.qpa.input: evdevtouch: Using device discovery
    qt.qpa.input: udev device discovery for type QFlags<QDeviceDiscovery::QDeviceType>(Device_Touchpad|Device_Touchscreen)
    qt.qpa.input: Found matching devices ("/dev/input/event0")
    qt.qpa.input: evdevtouch: Adding device at "/dev/input/event0"
    qt.qpa.input: evdevtouch: Using device /dev/input/event0
    qt.qpa.input: evdevtouch: /dev/input/event0: Protocol type B  (multi), filtered=no
    qt.qpa.input: evdevtouch: /dev/input/event0: min X: 0 max X: 1280
    qt.qpa.input: evdevtouch: /dev/input/event0: min Y: 0 max Y: 800
    qt.qpa.input: evdevtouch: /dev/input/event0: min pressure: 0 max pressure: 0
    qt.qpa.input: evdevtouch: /dev/input/event0: device name: Goodix Capacitive TouchScreen
    
    qt.qpa.input.keymap: Processing key event: keycode=330, modifiers=00 pressed=1, autorepeat=0  |  plain=-1, withmod=-1, size=612
    qt.qpa.input.keymap: Could not find a suitable mapping for keycode: 330, modifiers: 00
    qt.qpa.input.keymap: Processing key event: keycode=330, modifiers=00 pressed=0, autorepeat=0  |  plain=-1, withmod=-1, size=612
    qt.qpa.input.keymap: Could not find a suitable mapping for keycode: 330, modifiers: 00
    
    qt.qpa.input.keymap: Processing key event: keycode=125, modifiers=00 pressed=1, autorepeat=0  |  plain=-1, withmod=-1, size=612
    qt.qpa.input.keymap: Could not find a suitable mapping for keycode: 125, modifiers: 00
    qt.qpa.input.keymap: Processing key event: keycode=125, modifiers=00 pressed=0, autorepeat=0  |  plain=-1, withmod=-1, size=612
    qt.qpa.input.keymap: Could not find a suitable mapping for keycode: 125, modifiers: 00
    

    How to enable detection of event KEY_LEFTMETA in Qt/Qml.



  • Is there anyone who can guide me how to troubleshoot this problem?



  • @jigarp you may want to take a look at QEvdevKeyboardHandler source code where the warning message is sent, and see if you could add the LEFT_META key event.


Log in to reply