美文网首页
Android逆向 单手手柄getevent注册属性分析

Android逆向 单手手柄getevent注册属性分析

作者: LiuJP | 来源:发表于2020-06-10 18:32 被阅读0次

    Android 提供的工具

    getEvent 可以获取输入的touch信息
    sendEvent 发动一个touch信息
    https://blog.csdn.net/hellowxwworld/article/details/10732863/
    https://blog.csdn.net/hellowxwworld/article/details/10733567

    getevent

    HWTAS:/ $ getevent
    add device 1: /dev/input/event7
      name:     "Flydigi Wasp2"
    could not get driver version for /dev/input/mouse1, Not a typewriter
    add device 2: /dev/input/event0
      name:     "soundtrigger_input_dev"
    could not get driver version for /dev/input/mice, Not a typewriter
    could not get driver version for /dev/input/mouse0, Not a typewriter
    add device 3: /dev/input/event4
      name:     "huawei,ts_pen"
    add device 4: /dev/input/event1
      name:     "hisi_pmic_gpio_key"
    add device 5: /dev/input/event3
      name:     "input_mt_wrapper"
    add device 6: /dev/input/event5
      name:     "fingerprint"
    add device 7: /dev/input/event6
      name:     "hi3xxx_hi6405_card Headset Jack"
    add device 8: /dev/input/event2
      name:     "hisi_on"
    getevent -v /dev/input/event7
    

    Flydigi Wasp2

    • -v:根据 mask 值显示相关信息,执行后会一直显示上报数据
    errs=1, dev=2, name=4, info=8, vers=16, pos. events=32, props=64
    默认显示 dev| name| info| vers = 30;
    130|HWTAS:/ $ getevent -v /dev/input/event7
    add device 1: /dev/input/event7
      bus:      0005
      vendor    1915
      product   0040
      version   0101
      name:     "Flydigi Wasp2"
      location: ""
      id:       "cb:e9:1f:78:e3:ce"
      version:  1.0.1
    
    • -p:显示设备支持的事件类型和编码方式
    • 传统模式
    OnePlus7Pro:/ # getevent -i
    add device 1: /dev/input/event12
      bus:      0005
      vendor    1915
      product   0040
      version   0101
      name:     "Flydigi Wasp2"
      location: ""
      id:       "CE:E3:78:1F:E9:CB"
      version:  1.0.1
      events:
        KEY (0001): 0130  0131  0133  0134  0136  0137  0138  0139
                    013a  013b  013d  013e
        ABS (0003): 0000  : value 0, min -128, max 127, fuzz 0, flat 15, resolution 0
                    0001  : value -3, min -128, max 127, fuzz 0, flat 15, resolution 0
                    0009  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    000a  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    0010  : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    0011  : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    0028  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    0029  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    002a  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    002b  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
        MSC (0004): 0004
      input props:
        <none>
      HID descriptor: 0005:1915:0040.0010
    
        05 01 09 05 a1 01 85 01 a1 02 09 30 09 31 15 80 25 7f 35 80 45 7f 75 08 95 02 81 02 09 40 09 41 09 42 09 43 15 00 26 ff 00 75 08 95 04 81 02 75 04 95 01 15 01 25 08 46 3b 01 65 14 09 39 81 42 65 00 05 09 95 0c 75 01 25 01 15 00 09 01 09 02 09 04 09 05 09 07 09 08 09 09 09 0a 09 0b 09 0c 09 0e 09 0f 81 02 05 02 15 00 26 ff 00 09 c5 09 c4 95 02 75 08 81 02 c0 c0
    
          INPUT(1)[INPUT]
            Field(0)
              Application(GenericDesktop.GamePad)
              Usage(2)
                GenericDesktop.X
                GenericDesktop.Y
              Logical Minimum(-128)
              Logical Maximum(127)
              Physical Minimum(-128)
              Physical Maximum(127)
              Report Size(8)
              Report Count(2)
              Report Offset(0)
              Flags( Variable Absolute )
            Field(1)
              Application(GenericDesktop.GamePad)
              Usage(4)
                GenericDesktop.Vx
                GenericDesktop.Vy
                GenericDesktop.Vz
                GenericDesktop.Vbrx
              Logical Minimum(0)
              Logical Maximum(255)
              Physical Minimum(-128)
              Physical Maximum(127)
              Report Size(8)
              Report Count(4)
              Report Offset(16)
              Flags( Variable Absolute )
            Field(2)
              Application(GenericDesktop.GamePad)
              Usage(1)
                GenericDesktop.HatSwitch
              Logical Minimum(1)
              Logical Maximum(8)
              Physical Minimum(-128)
              Physical Maximum(315)
              Unit(English Rotation : Degrees)
              Report Size(4)
              Report Count(1)
              Report Offset(48)
              Flags( Variable Absolute NullState )
            Field(3)
              Application(GenericDesktop.GamePad)
              Usage(12)
                Button.0001
                Button.0002
                Button.0004
                Button.0005
                Button.0007
                Button.0008
                Button.0009
                Button.000a
                Button.000b
                Button.000c
                Button.000e
                Button.000f
              Logical Minimum(0)
              Logical Maximum(1)
              Physical Minimum(-128)
              Physical Maximum(315)
              Report Size(1)
              Report Count(12)
              Report Offset(52)
              Flags( Variable Absolute )
            Field(4)
              Application(GenericDesktop.GamePad)
              Usage(2)
                Simulation.00c5
                Simulation.00c4
              Logical Minimum(0)
              Logical Maximum(255)
              Physical Minimum(-128)
              Physical Maximum(315)
              Report Size(8)
              Report Count(2)
              Report Offset(64)
              Flags( Variable Absolute )
    
        GenericDesktop.X ---> Absolute.X
        GenericDesktop.Y ---> Absolute.Y
        GenericDesktop.Vx ---> Absolute.Misc
        GenericDesktop.Vy ---> Absolute.?
        GenericDesktop.Vz ---> Absolute.?
        GenericDesktop.Vbrx ---> Absolute.?
        GenericDesktop.HatSwitch ---> Absolute.Hat0X
        Button.0001 ---> Key.BtnA
        Button.0002 ---> Key.BtnB
        Button.0004 ---> Key.BtnX
        Button.0005 ---> Key.BtnY
        Button.0007 ---> Key.BtnTL
        Button.0008 ---> Key.BtnTR
        Button.0009 ---> Key.BtnTL2
        Button.000a ---> Key.BtnTR2
        Button.000b ---> Key.BtnSelect
        Button.000c ---> Key.BtnStart
        Button.000e ---> Key.BtnThumbL
        Button.000f ---> Key.BtnThumbR
        Simulation.00c5 ---> Absolute.Brake
        Simulation.00c4 ---> Absolute.Gas
    
    • 智联模式
    add device 12: /dev/input/event10
      bus:      0000
      vendor    0000
      product   0000
      version   0000
      name:     "STM VL53L1 proximity sensor"
      location: ""
      id:       ""
      version:  1.0.1
      events:
        ABS (0003): 0006  : value 0, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0007  : value 0, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0008  : value 9216, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0009  : value 0, min 0, max -1, fuzz 0, flat 0, resolution 0
                    000a  : value -635371776, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0010  : value 1586978789, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0011  : value 190819, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0012  : value 917506, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0013  : value 917524, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0014  : value 99942454, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0015  : value 91096685, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0016  : value 881664, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0017  : value 24064, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0019  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
                    001a  : value 59970, min 0, max -1, fuzz 0, flat 0, resolution 0
                    001b  : value 1520, min 0, max -1, fuzz 0, flat 0, resolution 0
                    001c  : value 82, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0020  : value 0, min 0, max -1, fuzz 0, flat 0, resolution 0
                    0028  : value 0, min 0, max -1, fuzz 0, flat 0, resolution 0
      input props:
        <none>
    add device 13: /dev/input/event3
      bus:      0000
      vendor    0000
      product   0000
      version   0000
      name:     "gf_input"
      location: ""
      id:       ""
      version:  1.0.1
      events:
        KEY (0001): 003c  0066  0067  0069  006a  006c  0074  008b
                    009e  0131
      input props:
        <none>
    OnePlus7Pro:/ # getevent -i
    add device 1: /dev/input/event12
      bus:      0005
      vendor    1915
      product   0040
      version   0101
      name:     "Flydigi Wasp2"
      location: ""
      id:       "CE:E3:78:1F:E9:CB"
      version:  1.0.1
      events:
        KEY (0001): 014a
        ABS (0003): 0000  : value 225, min 0, max 2047, fuzz 0, flat 0, resolution 0
                    0001  : value 903, min 0, max 2047, fuzz 0, flat 0, resolution 0
                    002f  : value 0, min 0, max 7, fuzz 0, flat 0, resolution 0
                    0035  : value 0, min 0, max 2047, fuzz 0, flat 0, resolution 0
                    0036  : value 0, min 0, max 2047, fuzz 0, flat 0, resolution 0
                    0039  : value 0, min 0, max 65535, fuzz 0, flat 0, resolution 0
      input props:
        INPUT_PROP_DIRECT
      HID descriptor: 0005:1915:0040.0011
    
        05 0d 09 04 a1 01 09 22 a1 02 09 42 15 00 25 01 75 01 95 01 81 02 09 32 81 02 75 06 09 51 95 01 81 02 05 01 16 00 00 26 ff 07 75 0c 55 00 65 00 09 30 35 00 46 00 00 81 02 09 31 81 02 c0 a1 02 05 0d 09 42 15 00 25 01 75 01 95 01 81 02 09 32 81 02 75 06 09 51 95 01 81 02 05 01 16 00 00 26 ff 07 75 0c 55 00 65 00 09 30 35 00 46 00 00 81 02 09 31 81 02 c0 a1 02 05 0d 09 42 15 00 25 01 75 01 95 01 81 02 09 32 81 02 75 06 09 51 95 01 81 02 05 01 16 00 00 26 ff 07 75 0c 55 00 65 00 09 30 35 00 46 00 00 81 02 09 31 81 02 c0 a1 02 05 0d 09 42 15 00 25 01 75 01 95 01 81 02 09 32 81 02 75 06 09 51 95 01 81 02 05 01 16 00 00 26 ff 07 75 0c 55 00 65 00 09 30 35 00 46 00 00 81 02 09 31 46 00 00 81 02 c0 05 0d 09 54 95 01 75 08 15 00 25 08 81 02 09 55 b1 02 c0
    
          INPUT[INPUT]
            Field(0)
              Logical(Digitizers.Finger)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.TipSwitch
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(0)
              Flags( Variable Absolute )
            Field(1)
              Logical(Digitizers.Finger)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.InRange
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(1)
              Flags( Variable Absolute )
            Field(2)
              Logical(Digitizers.Finger)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.ContactID
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(6)
              Report Count(1)
              Report Offset(2)
              Flags( Variable Absolute )
            Field(3)
              Logical(Digitizers.Finger)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.X
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(8)
              Flags( Variable Absolute )
            Field(4)
              Logical(Digitizers.Finger)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.Y
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(20)
              Flags( Variable Absolute )
            Field(5)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.TipSwitch
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(32)
              Flags( Variable Absolute )
            Field(6)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.InRange
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(33)
              Flags( Variable Absolute )
            Field(7)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.ContactID
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(6)
              Report Count(1)
              Report Offset(34)
              Flags( Variable Absolute )
            Field(8)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.X
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(40)
              Flags( Variable Absolute )
            Field(9)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.Y
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(52)
              Flags( Variable Absolute )
            Field(10)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.TipSwitch
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(64)
              Flags( Variable Absolute )
            Field(11)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.InRange
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(65)
              Flags( Variable Absolute )
            Field(12)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.ContactID
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(6)
              Report Count(1)
              Report Offset(66)
              Flags( Variable Absolute )
            Field(13)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.X
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(72)
              Flags( Variable Absolute )
            Field(14)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.Y
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(84)
              Flags( Variable Absolute )
            Field(15)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.TipSwitch
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(96)
              Flags( Variable Absolute )
            Field(16)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.InRange
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(1)
              Report Count(1)
              Report Offset(97)
              Flags( Variable Absolute )
            Field(17)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.ContactID
              Logical Minimum(0)
              Logical Maximum(1)
              Report Size(6)
              Report Count(1)
              Report Offset(98)
              Flags( Variable Absolute )
            Field(18)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.X
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(104)
              Flags( Variable Absolute )
            Field(19)
              Application(Digitizers.TouchScreen)
              Usage(1)
                GenericDesktop.Y
              Logical Minimum(0)
              Logical Maximum(2047)
              Report Size(12)
              Report Count(1)
              Report Offset(116)
              Flags( Variable Absolute )
            Field(20)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.ContactCount
              Logical Minimum(0)
              Logical Maximum(8)
              Report Size(8)
              Report Count(1)
              Report Offset(128)
              Flags( Variable Absolute )
          FEATURE[FEATURE]
            Field(0)
              Application(Digitizers.TouchScreen)
              Usage(1)
                Digitizers.ContactMaximumNumber
              Logical Minimum(0)
              Logical Maximum(8)
              Report Size(8)
              Report Count(1)
              Report Offset(0)
              Flags( Variable Absolute )
    
        Digitizers.TipSwitch ---> Key.Touch
        Digitizers.InRange ---> Sync.Report
        Digitizers.ContactID ---> Sync.Report
        GenericDesktop.X ---> Absolute.MTPositionX
        GenericDesktop.Y ---> Absolute.MTPositionY
        Digitizers.TipSwitch ---> Key.Touch
        Digitizers.InRange ---> Sync.Report
        Digitizers.ContactID ---> Sync.Report
        GenericDesktop.X ---> Absolute.MTPositionX
        GenericDesktop.Y ---> Absolute.MTPositionY
        Digitizers.TipSwitch ---> Key.Touch
        Digitizers.InRange ---> Sync.Report
        Digitizers.ContactID ---> Sync.Report
        GenericDesktop.X ---> Absolute.MTPositionX
        GenericDesktop.Y ---> Absolute.MTPositionY
        Digitizers.TipSwitch ---> Key.Touch
        Digitizers.InRange ---> Sync.Report
        Digitizers.ContactID ---> Sync.Report
        GenericDesktop.X ---> Absolute.MTPositionX
        GenericDesktop.Y ---> Absolute.MTPositionY
        Digitizers.ContactCount ---> Sync.Report
    
    • -i:显示设备的所有信息和支持的事件,比 -p 显示更多信息
    add device 1: /dev/input/event12
      bus:      0005
      vendor    1915
      product   0040
      version   0101
      name:     "Flydigi Wasp2"
      location: ""
      id:       "CE:E3:78:1F:E9:CB"
      version:  1.0.1
      events:
        KEY (0001): 0130  0131  0133  0134  0136  0137  0138  0139
                    013a  013b  013d  013e
        ABS (0003): 0000  : value -7, min -128, max 127, fuzz 0, flat 15, resolution 0
                    0001  : value 0, min -128, max 127, fuzz 0, flat 15, resolution 0
                    0009  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    000a  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    0010  : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    0011  : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    0028  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    0029  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    002a  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    002b  : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
        MSC (0004): 0004
      input props:
        <none>
      HID descriptor: 0005:1915:0040.0003
    
        05 01 09 05 a1 01 85 01 a1 02 09 30 09 31 15 80 25 7f 35 80 45 7f 75 08 95 02 81 02 09 40 09 41 09 42 09 43 15 00 26 ff 00 75 08 95 04 81 02 75 04 95 01 15 01 25 08 46 3b 01 65 14 09 39 81 42 65 00 05 09 95 0c 75 01 25 01 15 00 09 01 09 02 09 04 09 05 09 07 09 08 09 09 09 0a 09 0b 09 0c 09 0e 09 0f 81
     02 05 02 15 00 26 ff 00 09 c5 09 c4 95 02 75 08 81 02 c0 c0
    
          INPUT(1)[INPUT]
            Field(0)
              Application(GenericDesktop.GamePad)
              Usage(2)
                GenericDesktop.X
                GenericDesktop.Y
              Logical Minimum(-128)
              Logical Maximum(127)
              Physical Minimum(-128)
              Physical Maximum(127)
              Report Size(8)
              Report Count(2)
              Report Offset(0)
              Flags( Variable Absolute )
            Field(1)
              Application(GenericDesktop.GamePad)
              Usage(4)
                GenericDesktop.Vx
                GenericDesktop.Vy
                GenericDesktop.Vz
                GenericDesktop.Vbrx
              Logical Minimum(0)
              Logical Maximum(255)
              Physical Minimum(-128)
              Physical Maximum(127)
              Report Size(8)
              Report Count(4)
              Report Offset(16)
              Flags( Variable Absolute )
            Field(2)
              Application(GenericDesktop.GamePad)
              Usage(1)
                GenericDesktop.HatSwitch
              Logical Minimum(1)
              Logical Maximum(8)
              Physical Minimum(-128)
              Physical Maximum(315)
              Unit(English Rotation : Degrees)
              Report Size(4)
              Report Count(1)
              Report Offset(48)
              Flags( Variable Absolute NullState )
            Field(3)
              Application(GenericDesktop.GamePad)
              Usage(12)
                Button.0001
                Button.0002
                Button.0004
                Button.0005
                Button.0007
                Button.0008
                Button.0009
                Button.000a
                Button.000b
                Button.000c
                Button.000e
                Button.000f
              Logical Minimum(0)
              Logical Maximum(1)
              Physical Minimum(-128)
              Physical Maximum(315)
              Report Size(1)
              Report Count(12)
              Report Offset(52)
              Flags( Variable Absolute )
            Field(4)
              Application(GenericDesktop.GamePad)
              Usage(2)
                Simulation.00c5
                Simulation.00c4
              Logical Minimum(0)
              Logical Maximum(255)
              Physical Minimum(-128)
              Physical Maximum(315)
              Report Size(8)
              Report Count(2)
              Report Offset(64)
              Flags( Variable Absolute )
    
        GenericDesktop.X ---> Absolute.X
        GenericDesktop.Y ---> Absolute.Y
        GenericDesktop.Vx ---> Absolute.Misc
        GenericDesktop.Vy ---> Absolute.?
        GenericDesktop.Vz ---> Absolute.?
        GenericDesktop.Vbrx ---> Absolute.?
        GenericDesktop.HatSwitch ---> Absolute.Hat0X
        Button.0001 ---> Key.BtnA
        Button.0002 ---> Key.BtnB
        Button.0004 ---> Key.BtnX
        Button.0005 ---> Key.BtnY
        Button.0007 ---> Key.BtnTL
        Button.0008 ---> Key.BtnTR
        Button.0009 ---> Key.BtnTL2
        Button.000a ---> Key.BtnTR2
        Button.000b ---> Key.BtnSelect
        Button.000c ---> Key.BtnStart
        Button.000e ---> Key.BtnThumbL
        Button.000f ---> Key.BtnThumbR
        Simulation.00c5 ---> Absolute.Brake
        Simulation.00c4 ---> Absolute.Gas
    
    
    • -l:以文本形式输出事件类型和名称
    EV_ABS       ABS_Y                00000005
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff1
    EV_ABS       ABS_Y                00000004
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff2
    EV_ABS       ABS_Y                00000002
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff3
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff4
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff5
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff4
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffffa
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff9
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff8
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090002
    EV_KEY       BTN_EAST             DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090002
    EV_KEY       BTN_EAST             UP
    EV_SYN       SYN_REPORT           00000000
    
    • 单手手表的touch
    130|HWTAS:/ $ getevent -l /dev/input/event7
    EV_MSC       MSC_SCAN             0009000b
    EV_KEY       BTN_SELECT           DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             0009000b
    EV_KEY       BTN_SELECT           UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090007
    EV_KEY       BTN_TL               DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090007
    EV_KEY       BTN_TL               UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090001
    EV_KEY       BTN_GAMEPAD          UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090002
    EV_KEY       BTN_EAST             DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090002
    EV_KEY       BTN_EAST             UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             0009000b
    EV_KEY       BTN_SELECT           DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             0009000b
    EV_KEY       BTN_SELECT           UP
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090009
    EV_KEY       BTN_TL2              DOWN
    EV_ABS       ABS_BRAKE            000000ff
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090009
    EV_KEY       BTN_TL2              UP
    EV_ABS       ABS_BRAKE            00000000
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090007
    EV_KEY       BTN_TL               DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_MSC       MSC_SCAN             00090007
    EV_KEY       BTN_TL               UP
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_X                fffffff9
    EV_SYN       SYN_REPORT           00000000
    
    • 正常的touch 事件
    130|HWTAS:/ $ getevent -l /dev/input/event3
    EV_ABS       ABS_MT_POSITION_X    0000029e
    EV_ABS       ABS_MT_POSITION_Y    0000063d
    EV_ABS       ABS_MT_PRESSURE      00000202
    EV_ABS       ABS_MT_TRACKING_ID   00000000
    EV_ABS       ABS_MT_TOUCH_MAJOR   000000be
    EV_ABS       ABS_MT_TOUCH_MINOR   000000b0
    EV_ABS       ABS_MT_ORIENTATION   ffffffb1
    EV_ABS       ABS_MT_BLOB_ID       00000000
    EV_SYN       SYN_MT_REPORT        00000000
    EV_KEY       BTN_TOUCH            DOWN
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    0000029e
    EV_ABS       ABS_MT_POSITION_Y    0000063d
    EV_ABS       ABS_MT_PRESSURE      00000223
    EV_ABS       ABS_MT_TRACKING_ID   00000000
    EV_ABS       ABS_MT_TOUCH_MAJOR   000000b0
    EV_ABS       ABS_MT_TOUCH_MINOR   000000b0
    EV_ABS       ABS_MT_ORIENTATION   ffffffb1
    EV_ABS       ABS_MT_BLOB_ID       00000000
    EV_SYN       SYN_MT_REPORT        00000000
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    0000029e
    EV_ABS       ABS_MT_POSITION_Y    0000063d
    EV_ABS       ABS_MT_PRESSURE      00000233
    EV_ABS       ABS_MT_TRACKING_ID   00000000
    EV_ABS       ABS_MT_TOUCH_MAJOR   000000be
    EV_ABS       ABS_MT_TOUCH_MINOR   000000b0
    EV_ABS       ABS_MT_ORIENTATION   ffffffaa
    EV_ABS       ABS_MT_BLOB_ID       00000000
    EV_SYN       SYN_MT_REPORT        00000000
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    0000029e
    EV_ABS       ABS_MT_POSITION_Y    0000063d
    EV_ABS       ABS_MT_PRESSURE      000001e8
    EV_ABS       ABS_MT_TRACKING_ID   00000000
    EV_ABS       ABS_MT_TOUCH_MAJOR   000000b0
    EV_ABS       ABS_MT_TOUCH_MINOR   000000b0
    EV_ABS       ABS_MT_ORIENTATION   ffffffdd
    EV_ABS       ABS_MT_BLOB_ID       00000000
    EV_SYN       SYN_MT_REPORT        00000000
    EV_SYN       SYN_REPORT           00000000
    EV_ABS       ABS_MT_POSITION_X    0000029e
    EV_ABS       ABS_MT_POSITION_Y    0000063d
    EV_ABS       ABS_MT_PRESSURE      0000008a
    EV_ABS       ABS_MT_TRACKING_ID   00000000
    EV_ABS       ABS_MT_TOUCH_MAJOR   000000ea
    EV_ABS       ABS_MT_TOUCH_MINOR   000000be
    EV_ABS       ABS_MT_ORIENTATION   00000006
    EV_ABS       ABS_MT_BLOB_ID       00000000
    EV_SYN       SYN_MT_REPORT        00000000
    EV_SYN       SYN_REPORT           00000000
    EV_SYN       SYN_MT_REPORT        00000000
    EV_KEY       BTN_TOUCH            UP
    EV_SYN       SYN_REPORT           00000000
    
    • -r:显示事件上报速率

    hw_mate30

    open_dev huawei,ts_pen /dev/input/event5
    open_dev soundtrigger_input_dev /dev/input/event0
    open_dev  /dev/input/mice
    open_dev  /dev/input/mouse1
    open_dev input_mt_wrapper /dev/input/event4
     input props:
    open_dev  /dev/input/mouse0
    open_dev fingerprint /dev/input/event3
    open_dev hi3xxx_hi6405_card Headset Jack /dev/input/event6
    open_dev hisi_on /dev/input/event2
    open_dev hisi_pmic_gpio_key /dev/input/event1
    

    vivo_X21A

    open_dev ShootingPlus V3 a /dev/input/event8
      input props:
    open_dev  /dev/input/mouse2
    open_dev sdm660-snd-card-cdp Button Jack /dev/input/event7
    open_dev sdm660-snd-card-cdp Headset Jack /dev/input/event6
    open_dev goodixfp /dev/input/event4
    open_dev vivo_ts /dev/input/event1
    open_dev  /dev/input/mouse0
    open_dev synaptics_3706 /dev/input/event2
    open_dev gpio-keys /dev/input/event5
    open_dev synaptics_dsx_proximity_3706 /dev/input/event3
    open_dev qpnp_pon /dev/input/event0
    open_dev  /dev/input/mice
    open_dev  /dev/input/mouse1
    

    oneplus_7pro

    open_dev sm8150-tavil-snd-card Button Jack /dev/input/event14
    open_dev sm8150-tavil-snd-card Headset Jack /dev/input/event13
    open_dev elliptic_ultrasound_proximity /dev/input/event12
    open_dev motor /dev/input/event11
    open_dev gf_input /dev/input/event3
    open_dev qti-haptics /dev/input/event4
    open_dev qpnp_pon /dev/input/event0
    open_dev oneplus,fresh_rate /dev/input/event2
    open_dev oneplus,dc_mode /dev/input/event1
    open_dev touchpanel_ps /dev/input/event7
    open_dev touchpanel_kpd /dev/input/event6
    open_dev STM VL53L1 proximity sensor /dev/input/event10
    open_dev oneplus,brightness /dev/input/event8
    open_dev touchpanel /dev/input/event5
      input props:
    open_dev gpio-keys /dev/input/event9
    

    pixl 2l

    open_dev uinput-folio /dev/input/event5
    open_dev uinput-fpc /dev/input/event4
    open_dev touchscreen /dev/input/event3
      input props:
    INPUT_PROP_DIRECT
    open_dev STM VL53L0 proximity sensor /dev/input/event1
    open_dev qpnp_pon /dev/input/event0
    open_dev gpio-keys /dev/input/event2
    

    cat /proc/bus/input/devices打出来的信息

    I: Bus=0000 Vendor=0000 Product=0000 Version=0000
    N: Name="synaptics-rmi-touchscreen"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input3
    U: Uniq=
    H: Handlers=event3 cpufreq
    B: EV=b
    B: KEY=400 0 4 0 2000000 0 40000800 40 0 0 0
    B: ABS=650000 0

    只读权限的问题

    O_RDONLY
    O_WRONLY
    O_RDWR
    再华为mate 30 上只读所以只能使用uinput

    /dev/input/event%d

    int getTouchEventNum() //判断触摸框事件是哪一个event
    {
        struct input_event inputEvent;
        char name[64];           /* RATS: Use ok, but could be better */
        char buf[256] = {0,};  /* RATS: Use ok */
        int fd = 0;
        int i;
        for (i = 0; i < 32; i++) {
            sprintf(name, "/dev/input/event%d", i);
            if ((fd = open(name, O_RDONLY, 0)) >= 0) {
                ioctl(fd, EVIOCGNAME(sizeof(buf)), buf);
                if (strstr(buf, "touchscreen")) {
    //                close(fd);
    //                return i;
                    break;
                }
                printf("%s\n", name);
                printf("name: %s\n", buf);
                close(fd);
            }
        }
        memset(&inputEvent,0,sizeof(inputEvent));
        printf(": %d\n", fd);
    
        while (1) {
            if (read(fd, &inputEvent, sizeof(inputEvent)) == sizeof(inputEvent)) {
                if (inputEvent.type == EV_KEY)
                    if (inputEvent.value == 0 || inputEvent.value == 1) {
                        printf("key %d %s\n", inputEvent.code, (inputEvent.value) ? "Pressed" : "Released");
                        if (inputEvent.code == KEY_ESC)
                            break;
                    }
            }
        }
        close(fd);
        return -1;
    }
    
    mocute
    add device 1: /dev/input/event4
      bus:      0005
      vendor    0000
      product   0000
      version   0000
      name:     "MOCUTE-054-MX01-HID"
      location: ""
      id:       "e0:f8:48:54:00:00"
      version:  1.0.1
      events:
        KEY (0001): KEY_ESC               KEY_ENTER             KEY_KPMINUS           KEY_KPPLUS
                    KEY_UP                KEY_LEFT              KEY_RIGHT             KEY_DOWN
                    KEY_INSERT            KEY_DELETE            KEY_MUTE              KEY_VOLUMEDOWN
                    KEY_VOLUMEUP          KEY_POWER             KEY_PAUSE             KEY_SCALE
                    KEY_STOP              KEY_PROPS             KEY_UNDO              KEY_COPY
                    KEY_OPEN              KEY_PASTE             KEY_FIND              KEY_CUT
                    KEY_HELP              KEY_MENU              KEY_CALC              KEY_SLEEP
                    KEY_FILE              KEY_WWW               KEY_COFFEE            KEY_MAIL
                    KEY_BOOKMARKS         KEY_BACK              KEY_FORWARD           KEY_EJECTCD
                    KEY_NEXTSONG          KEY_PLAYPAUSE         KEY_PREVIOUSSONG      KEY_STOPCD
                    KEY_RECORD            KEY_REWIND            KEY_PHONE             KEY_CONFIG
                    KEY_HOMEPAGE          KEY_REFRESH           KEY_EXIT              KEY_EDIT
                    KEY_SCROLLUP          KEY_SCROLLDOWN        KEY_NEW               KEY_REDO
                    KEY_CLOSE             KEY_PLAY              KEY_FASTFORWARD       KEY_BASSBOOST
                    KEY_PRINT             KEY_CAMERA            KEY_CHAT              KEY_SEARCH
                    KEY_FINANCE           KEY_CANCEL            KEY_BRIGHTNESSDOWN    KEY_BRIGHTNESSUP
                    KEY_KBDILLUMTOGGLE    KEY_KBDILLUMDOWN      KEY_KBDILLUMUP        KEY_SEND
                    KEY_REPLY             KEY_FORWARDMAIL       KEY_SAVE              KEY_DOCUMENTS
                    KEY_UNKNOWN           KEY_VIDEO_NEXT        KEY_BRIGHTNESS_AUTO   BTN_MISC
                    BTN_MOUSE             BTN_RIGHT             BTN_MIDDLE            BTN_SIDE
                    BTN_EXTRA             BTN_GAMEPAD           BTN_EAST              BTN_C
                    BTN_NORTH             BTN_WEST              BTN_Z                 BTN_TL
                    BTN_TR                BTN_TL2               BTN_TR2               BTN_SELECT
                    BTN_START             BTN_MODE              BTN_THUMBL            BTN_THUMBR
                    013f                  KEY_SELECT            KEY_GOTO              KEY_INFO
                    KEY_PROGRAM           KEY_PVR               KEY_SUBTITLE          KEY_ZOOM
                    KEY_KEYBOARD          KEY_PC                KEY_TV                KEY_TV2
                    KEY_VCR               KEY_VCR2              KEY_SAT               KEY_CD
                    KEY_TAPE              KEY_TUNER             KEY_PLAYER            KEY_DVD
                    KEY_AUDIO             KEY_VIDEO             KEY_MEMO              KEY_CALENDAR
                    KEY_RED               KEY_GREEN             KEY_YELLOW            KEY_BLUE
                    KEY_CHANNELUP         KEY_CHANNELDOWN       KEY_LAST              KEY_NEXT
                    KEY_RESTART           KEY_SLOW              KEY_SHUFFLE           KEY_PREVIOUS
                    KEY_VIDEOPHONE        KEY_GAMES             KEY_ZOOMIN            KEY_ZOOMOUT
                    KEY_ZOOMRESET         KEY_WORDPROCESSOR     KEY_EDITOR            KEY_SPREADSHEET
                    KEY_GRAPHICSEDITOR    KEY_PRESENTATION      KEY_DATABASE          KEY_NEWS
                    KEY_VOICEMAIL         KEY_ADDRESSBOOK       KEY_MESSENGER         KEY_DISPLAYTOGGLE
                    KEY_SPELLCHECK        KEY_LOGOFF            KEY_MEDIA_REPEAT      KEY_IMAGES
                    KEY_BUTTONCONFIG      KEY_TASKMANAGER       KEY_JOURNAL           KEY_CONTROLPANEL
                    KEY_APPSELECT         KEY_SCREENSAVER       KEY_VOICECOMMAND      KEY_ASSISTANT
                    KEY_BRIGHTNESS_MIN    KEY_BRIGHTNESS_MAX    KEY_KBDINPUTASSIST_P     KEY_KBDINPUTASSIST_N
                    KEY_KBDINPUTASSIST_P          KEY_KBDINPUTASSIST_N          KEY_KBDINPUTASSIST_A       KEY_KBDINPUTASSIST_C
        REL (0002): REL_X                 REL_Y                 REL_HWHEEL            REL_WHEEL
        ABS (0003): ABS_X                 : value 128, min 0, max 255, fuzz 0, flat 15, resolution 0
                    ABS_Y                 : value 128, min 0, max 255, fuzz 0, flat 15, resolution 0
                    ABS_Z                 : value 128, min 0, max 255, fuzz 0, flat 15, resolution 0
                    ABS_RZ                : value 128, min 0, max 255, fuzz 0, flat 15, resolution 0
                    ABS_GAS               : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    ABS_BRAKE             : value 0, min 0, max 255, fuzz 0, flat 15, resolution 0
                    ABS_HAT0X             : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    ABS_HAT0Y             : value 0, min -1, max 1, fuzz 0, flat 0, resolution 0
                    ABS_VOLUME            : value 0, min 0, max 896, fuzz 0, flat 0, resolution 0
        MSC (0004): MSC_SCAN
      input props:
        <none>
    
    

    于event0节点下读写魅族呼吸灯按钮也就是屏幕下方圆形的那个发光主键的“mxhub-keys”子系统
    位于event4节点下读写重力传感器的“lsm330dlc_gyr”子系统
    位于event3节点下读写加速度传感器的“lsm330dlc_acc”子系统
    位于event1节点下读写红外线传感器的“gp2ap”子系统(魅族mx3是用红外线来测定光感和距离的)
    位于event5节点下读写屏幕触摸的“mx_ts”子系统
    位于event6节点下读写物理按键的“gpio-keys”子系统
    位于event7节点下读写耳机按键的“Headset”子系统(有些手机监控线控设备的系统常以hook为名,这里魅族使用不多见Headset来表示该类不知是否是有布局头戴式设备的意义)
    位于event2节点下读写罗盘的“compass”子系统

    • tracking_id是 slot_id
      fd_touch_0 x 34
      fd_touch_0 y 2295
      fd_touch_0 ABS_MT_TRACKING_ID 0

    相关文章

      网友评论

          本文标题:Android逆向 单手手柄getevent注册属性分析

          本文链接:https://www.haomeiwen.com/subject/tcnptktx.html