国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux下查看輸入設(shè)備、獲取輸入事件的詳細(xì)方法

這篇具有很好參考價(jià)值的文章主要介紹了Linux下查看輸入設(shè)備、獲取輸入事件的詳細(xì)方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

/dev/input/目錄

/dev/input/目錄下的事件都是在驅(qū)動(dòng)中調(diào)用input_register_device(struct input_dev *dev)產(chǎn)生的。筆者的/dev/input/目錄中的文件如下:

$ ls /dev/input/
by-id  by-path  event0  event1  event10  event11  event12  event13  event2  event3  event4  event5  event6  event7  event8  event9  mice  mouse0  mouse1  mouse2
$ ls -l /dev/input
總用量 0
drwxr-xr-x 2 root root     100 11月  7 11:09 by-id
drwxr-xr-x 2 root root     200 11月  7 11:09 by-path
crw-rw---- 1 root input 13, 64 11月  2 15:53 event0
crw-rw---- 1 root input 13, 65 11月  2 15:53 event1
crw-rw---- 1 root input 13, 74 11月  2 15:53 event10
crw-rw---- 1 root input 13, 75 11月  2 15:53 event11
crw-rw---- 1 root input 13, 76 11月  2 15:53 event12
crw-rw---- 1 root input 13, 77 11月  2 15:53 event13
crw-rw---- 1 root input 13, 66 11月  2 15:53 event2
crw-rw---- 1 root input 13, 67 11月  2 15:53 event3
crw-rw---- 1 root input 13, 68 11月  2 15:53 event4
crw-rw---- 1 root input 13, 69 11月  7 11:09 event5
crw-rw---- 1 root input 13, 70 11月  2 15:53 event6
crw-rw---- 1 root input 13, 71 11月  2 15:53 event7
crw-rw---- 1 root input 13, 72 11月  2 15:53 event8
crw-rw---- 1 root input 13, 73 11月  2 15:53 event9
crw-rw---- 1 root input 13, 63 11月  2 15:53 mice
crw-rw---- 1 root input 13, 32 11月  2 15:53 mouse0
crw-rw---- 1 root input 13, 33 11月  2 15:53 mouse1
crw-rw---- 1 root input 13, 34 11月  7 11:09 mouse2

每個(gè)event代表一個(gè)事件。那么如何知道每個(gè)事件分別與哪個(gè)設(shè)備對(duì)應(yīng)?這需要借助于/proc/bus了。

/proc/bus/input/devices

/proc/bus/input/devices存放了與event對(duì)應(yīng)的相關(guān)設(shè)備信息。筆者電腦中的內(nèi)容如下:

$ cat /proc/bus/input/devices 
I: Bus=0019 Vendor=0000 Product=0005 Version=0000
N: Name="Lid Switch"
P: Phys=PNP0C0D/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1a/PNP0C0D:00/input/input0
U: Uniq=
H: Handlers=event0 
B: PROP=0
B: EV=21
B: SW=1

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1
U: Uniq=
H: Handlers=kbd event1 
B: PROP=0
B: EV=3
B: KEY=10000000000000 0

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
U: Uniq=
H: Handlers=sysrq kbd event2 leds 
B: PROP=0
B: EV=120013
B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

I: Bus=0019 Vendor=0000 Product=0000 Version=0000
N: Name="Ideapad extra buttons"
P: Phys=ideapad/input0
S: Sysfs=/devices/pci0000:00/0000:00:1f.0/PNP0C09:00/VPC2004:00/input/input7
U: Uniq=
H: Handlers=rfkill kbd event6 
B: PROP=0
B: EV=13
B: KEY=81000800100c03 4400000000300000 0 2
B: MSC=10

I: Bus=0018 Vendor=06cb Product=ce2d Version=0100
N: Name="MSFT0001:01 06CB:CE2D Mouse"
P: Phys=i2c-MSFT0001:01
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-MSFT0001:01/0018:06CB:CE2D.0001/input/input8
U: Uniq=
H: Handlers=mouse0 event3 
B: PROP=0
B: EV=17
B: KEY=30000 0 0 0 0
B: REL=3
B: MSC=10

I: Bus=0018 Vendor=06cb Product=ce2d Version=0100
N: Name="MSFT0001:01 06CB:CE2D Touchpad"
P: Phys=i2c-MSFT0001:01
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-MSFT0001:01/0018:06CB:CE2D.0001/input/input9
U: Uniq=
H: Handlers=mouse1 event4 
B: PROP=5
B: EV=1b
B: KEY=e520 10000 0 0 0 0
B: ABS=2e0800000000003
B: MSC=20

I: Bus=0003 Vendor=13d3 Product=56ff Version=1919
N: Name="Integrated Camera: Integrated C"
P: Phys=usb-0000:00:14.0-7/button
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/input/input11
U: Uniq=
H: Handlers=kbd event7 
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0019 Vendor=0000 Product=0006 Version=0000
N: Name="Video Bus"
P: Phys=LNXVIDEO/video/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input12
U: Uniq=
H: Handlers=kbd event8 
B: PROP=0
B: EV=3
B: KEY=3e000b00000000 0 0 0

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="sof-hda-dsp Headset Mic"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input13
U: Uniq=
H: Handlers=event9 
B: PROP=0
B: EV=21
B: SW=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="sof-hda-dsp Headphone"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input14
U: Uniq=
H: Handlers=event10 
B: PROP=0
B: EV=21
B: SW=4

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="sof-hda-dsp HDMI/DP,pcm=3"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input15
U: Uniq=
H: Handlers=event11 
B: PROP=0
B: EV=21
B: SW=140

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="sof-hda-dsp HDMI/DP,pcm=4"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input16
U: Uniq=
H: Handlers=event12 
B: PROP=0
B: EV=21
B: SW=140

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="sof-hda-dsp HDMI/DP,pcm=5"
P: Phys=ALSA
S: Sysfs=/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0/input17
U: Uniq=
H: Handlers=event13 
B: PROP=0
B: EV=21
B: SW=140

I: Bus=0003 Vendor=093a Product=2521 Version=0111
N: Name="USB OPTICAL MOUSE"
P: Phys=usb-0000:00:14.0-5/input0
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb3/3-5/3-5:1.0/0003:093A:2521.0005/input/input20
U: Uniq=
H: Handlers=mouse2 event5 
B: PROP=0
B: EV=17
B: KEY=1f0000 0 0 0 0
B: REL=1943
B: MSC=10

可以看到,每一項(xiàng)的“H:”一行后邊的內(nèi)容中就是對(duì)應(yīng)的event。以觸摸板為例:

I: Bus=0018 Vendor=06cb Product=ce2d Version=0100
N: Name="MSFT0001:01 06CB:CE2D Touchpad"
P: Phys=i2c-MSFT0001:01
S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-MSFT0001:01/0018:06CB:CE2D.0001/input/input9
U: Uniq=
H: Handlers=mouse1 event4 
B: PROP=5
B: EV=1b
B: KEY=e520 10000 0 0 0 0
B: ABS=2e0800000000003
B: MSC=20

通過“N:”一行后邊的內(nèi)容可以看出是Touchpad設(shè)備,它對(duì)應(yīng)的事件見于“H: Handlers=mouse1 event4”一行,是event4。

由此引出來一個(gè)常用的輸入事件測(cè)試工具 —— evtest。

evtest

在開發(fā)input子系統(tǒng)驅(qū)動(dòng)時(shí),常常會(huì)使用evtest工具進(jìn)行測(cè)試。evtest是打印evdev內(nèi)核事件的工具,它直接從內(nèi)核設(shè)備讀取并打印設(shè)備描述的帶有值和符號(hào)名的事件,可以用來調(diào)試鼠標(biāo)、鍵盤、觸摸板等輸入設(shè)備
evtest通常用于在X.org中調(diào)試輸入設(shè)備的問題,evtest提供了內(nèi)核的處理信息。根據(jù)這些信息,可以判斷是內(nèi)核問題還是X.org問題。

輸出數(shù)據(jù)中,“type”是input類型,可以是“EV KEY”、“EV SW”、“EV SND”、“EV LED”或數(shù)值;“value”可以是十進(jìn)制也可以是十六進(jìn)制,或者是查詢的kev/開關(guān)/聲音/LED的常量名。

下邊看一下具體的安裝使用方法。

安裝

sudo apt install evtest -y

編譯安裝

$ tar   -xjvf   evtest_1.33.orig.tar.bz2
$ cd evtest-1.33/
$ ./configure
$ make
$ sudo make install

使用

sudo evtest /dev/input/eventx(x為事件編號(hào))

?注:需要用root用戶,或者sudo操作。

在筆者電腦中,運(yùn)行示例如下:

$ sudo evtest

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	Lid Switch
/dev/input/event1:	Power Button
/dev/input/event2:	AT Translated Set 2 keyboard
/dev/input/event3:	MSFT0001:01 06CB:CE2D Mouse
/dev/input/event4:	MSFT0001:01 06CB:CE2D Touchpad
/dev/input/event5:	USB OPTICAL MOUSE
/dev/input/event6:	Ideapad extra buttons
/dev/input/event7:	Integrated Camera: Integrated C
/dev/input/event8:	Video Bus
/dev/input/event9:	sof-hda-dsp Headset Mic
/dev/input/event10:	sof-hda-dsp Headphone
/dev/input/event11:	sof-hda-dsp HDMI/DP,pcm=3
/dev/input/event12:	sof-hda-dsp HDMI/DP,pcm=4
/dev/input/event13:	sof-hda-dsp HDMI/DP,pcm=5
Select the device event number [0-13]: 

仍然以Touchpad為例,對(duì)應(yīng)的event為4,輸入4,并隨便在觸摸板上滑動(dòng),結(jié)果如下:

Select the device event number [0-13]: 4
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x6cb product 0xce2d version 0x100
Input device name: "MSFT0001:01 06CB:CE2D Touchpad"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 272 (BTN_LEFT)
    Event code 325 (BTN_TOOL_FINGER)
    Event code 328 (BTN_TOOL_QUINTTAP)
    Event code 330 (BTN_TOUCH)
    Event code 333 (BTN_TOOL_DOUBLETAP)
    Event code 334 (BTN_TOOL_TRIPLETAP)
    Event code 335 (BTN_TOOL_QUADTAP)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    994
      Min        0
      Max     1224
      Resolution      12
    Event code 1 (ABS_Y)
      Value    505
      Min        0
      Max      804
      Resolution      12
    Event code 47 (ABS_MT_SLOT)
      Value      0
      Min        0
      Max        4
    Event code 53 (ABS_MT_POSITION_X)
      Value      0
      Min        0
      Max     1224
      Resolution      12
    Event code 54 (ABS_MT_POSITION_Y)
      Value      0
      Min        0
      Max      804
      Resolution      12
    Event code 55 (ABS_MT_TOOL_TYPE)
      Value      0
      Min        0
      Max        2
    Event code 57 (ABS_MT_TRACKING_ID)
      Value      0
      Min        0
      Max    65535
  Event type 4 (EV_MSC)
    Event code 5 (MSC_TIMESTAMP)
Properties:
  Property type 0 (INPUT_PROP_POINTER)
  Property type 2 (INPUT_PROP_BUTTONPAD)
Testing ... (interrupt to exit)
Event: time 1667899054.177672, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 1515
Event: time 1667899054.177672, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 376
Event: time 1667899054.177672, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 382
Event: time 1667899054.177672, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1667899054.177672, type 1 (EV_KEY), code 325 (BTN_TOOL_FINGER), value 1

直接讀取/dev/input/eventx

使用cat查看輸入事件的內(nèi)容,操作相應(yīng)輸入設(shè)備,事件會(huì)上報(bào)內(nèi)容。以字符串方式解讀會(huì)呈現(xiàn)亂碼。如下所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-615744.html

sudo cat /dev/input/event4

b"jcW.	9?b"jcW.	5$b"jcW.	6?b"jcW.	Jb"jcW.	Eb"jcW.	$b"jcW.	?b"jcW.	b"jcW.	b"jc?6	X"jc?6	b"jc?S Rb"jc?S	b"jc?n	??b"jc?n	b"jco?	?b"jco?	b"jc?	5'b"jc?	6?b"jc?	'b"jc?	?b"jc?	h?b"jc?	b"jcU?	5+b"jcU?	6?b"jcU?	+b"jcU?	?b"jcU?	??b"jcU?	b"jci?	5/b"jci?	6?b"jci?	/b"jci?	?b"jci?	?b"jci?	b"jc??	54b"jc??	6?b"jc??	4b"jc??	?b"jc??	pb"jc??	b"jc?
58b"jc?
6?b"jc?
8b"jc?
?b"jc?

到了這里,關(guān)于Linux下查看輸入設(shè)備、獲取輸入事件的詳細(xì)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux上查看外接USB設(shè)備類型

    Linux上查看外接USB設(shè)備類型

    最近遇到一個(gè)問題,需要在shell腳本中識(shí)別當(dāng)前顯示器的USB觸屏線是否插入,并讀取顯示器名稱,以確定是否是想要的。 解決思路: lsusb命令可以列出所有的外接USB設(shè)備: 其中 “Atmel Corp. Atmel maXTouch Digitizer” 即為插入的顯示器,如果換成其他的顯示器,這里則顯示不同的名

    2024年02月12日
    瀏覽(23)
  • Linux輸入設(shè)備應(yīng)用編程(鍵盤,按鍵,觸摸屏,鼠標(biāo))

    Linux輸入設(shè)備應(yīng)用編程(鍵盤,按鍵,觸摸屏,鼠標(biāo))

    目錄 一 輸入設(shè)備編程介紹 1.1?什么是輸入設(shè)備呢? ?1.2 什么是輸入設(shè)備的應(yīng)用編程?? ?1.3 input子系統(tǒng) 1.4? 數(shù)據(jù)讀取流程 1.5 應(yīng)用程序如何解析數(shù)據(jù) 1.5.1 按鍵類事件: ?1.5.2 相對(duì)位移事件? 1.5.3 絕對(duì)位移事件? 二 讀取 struct input_event數(shù)據(jù)?? 本章學(xué)習(xí)Linux輸入設(shè)備的應(yīng)用編程

    2024年02月05日
    瀏覽(38)
  • [Linux] C獲取鍵盤輸入值

    鍵盤檢測(cè)指令:cat /dev/input/event1 | hexdump 鼠標(biāo)檢測(cè)指令:cat /dev/input/event2 | hexdump 當(dāng)鍵盤/鼠標(biāo)有輸入時(shí),會(huì)有對(duì)應(yīng)的一堆16進(jìn)制輸出。它其實(shí)對(duì)應(yīng)著input_event結(jié)構(gòu)體【24字節(jié)】。 方法2: 采用SDL2 [simplle directmedia layer] ?, 此方法用于GUI項(xiàng)目,事件只針對(duì)SDL創(chuàng)建的窗口內(nèi)有效

    2024年02月12日
    瀏覽(17)
  • Linux命令-blkid命令(查看塊設(shè)備的文件系統(tǒng)類型、LABEL、UUID等信息)

    在Linux下可以使用 blkid命令 對(duì)查詢?cè)O(shè)備上所采用文件系統(tǒng)類型進(jìn)行查詢。blkid主要用來對(duì)系統(tǒng)的塊設(shè)備(包括交換分區(qū))所使用的文件系統(tǒng)類型、LABEL、UUID等信息進(jìn)行查詢。要使用這個(gè)命令必須安裝e2fsprogs軟件包。 列出當(dāng)前系統(tǒng)中所有已掛載文件系統(tǒng)的類型: 顯示指定設(shè)備

    2024年02月19日
    瀏覽(18)
  • JavaScript 獲取 input 輸入框內(nèi)容的方法

    在 JavaScript 中獲取 input 輸入框內(nèi)容的方法有以下幾種: 使用 document.getElementById 方法獲取輸入框元素,再通過 value 屬性獲取輸入框內(nèi)容。示例代碼如下 var input = document.getElementById(\\\"myInput\\\"); var inputValue = input.value; ? 使用 document.querySelector 方法獲取輸入框元素,再通過 value 屬性

    2024年02月05日
    瀏覽(19)
  • Element UI輸入框focus()方法自動(dòng)獲取焦點(diǎn)失敗處理方法

    Element UI輸入框focus()方法自動(dòng)獲取焦點(diǎn)失敗處理方法

    ? 本來想通過自定義事件觸發(fā)輸入框,并獲取焦點(diǎn),但是使用官方提示的focus()方法一直失效 后來百度了半天,終于找到一個(gè)比較好的處理方法。 ? 先放對(duì)比代碼: 剛開始的代碼 后來修改后的代碼 完美解決 總結(jié): 百度查了半天,終于找到了原因 問題原因:渲染組件需要

    2024年02月02日
    瀏覽(21)
  • adb詳細(xì)教程(四)-使用adb啟動(dòng)應(yīng)用、關(guān)閉應(yīng)用、清空應(yīng)用數(shù)據(jù)、獲取設(shè)備已安裝應(yīng)用列表

    adb詳細(xì)教程(四)-使用adb啟動(dòng)應(yīng)用、關(guān)閉應(yīng)用、清空應(yīng)用數(shù)據(jù)、獲取設(shè)備已安裝應(yīng)用列表

    adb對(duì)于安卓移動(dòng)端來說,是個(gè)非常重要的調(diào)試工具。 本篇介紹常用的adb指令 (adb的安裝包我已上傳到了網(wǎng)盤??梢灾苯铀阉鞴娞?hào)【軟件測(cè)試必備技能】或 滑到文章底部,點(diǎn)擊公眾號(hào)卡片掃描二維碼,前往關(guān)注領(lǐng)取。) ADB的安裝與設(shè)置可以參考博客之前的文章: adb詳細(xì)教

    2024年02月05日
    瀏覽(150)
  • linux dmidecode命令(dmidecode指令)DMI (Desktop Management Interface) 數(shù)據(jù)、桌面管理接口數(shù)據(jù)、查看系統(tǒng)信息、查看硬件信息、設(shè)備序列號(hào)

    linux dmidecode命令(dmidecode指令)DMI (Desktop Management Interface) 數(shù)據(jù)、桌面管理接口數(shù)據(jù)、查看系統(tǒng)信息、查看硬件信息、設(shè)備序列號(hào)

    dmidecode 是一個(gè)在 Linux 系統(tǒng)下獲取硬件信息的工具。它允許用戶查看計(jì)算機(jī)硬件的詳細(xì)信息,包括制造商、產(chǎn)品名稱、序列號(hào)等。這個(gè)命令能夠解析和顯示計(jì)算機(jī)的 DMI (Desktop Management Interface) 數(shù)據(jù)。 在大多數(shù) Linux 發(fā)行版中, dmidecode 都是預(yù)裝的。如果沒有預(yù)裝,可以使用系統(tǒng)

    2024年04月11日
    瀏覽(30)
  • NC65 樹表型參照 搜索全部 按鈕點(diǎn)擊事件后獲取sql的方法

    NC65 樹表型參照 搜索全部 按鈕點(diǎn)擊事件后獲取sql的方法

    NC65 樹表型參照 搜索全部 按鈕點(diǎn)擊事件后獲取sql的方法。 具體可查看 樹表型參照UI類:nc.ui.bd.ref.UFRefGridTreeUI

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包