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

84 阅读16分钟

Android 提供的工具

getEvent 可以获取输入的touch信息 sendEvent 发动一个touch信息 blog.csdn.net/hellowxwwor… blog.csdn.net/hellowxwwor…

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