我在使用终端时遇到了一个恼人的问题,我无法在谷歌上寻找解决方案,因为我不知道该怎么表达。
当我在终端上加载文本时(例如,在dmesg之后),我尝试向上滚动以查找我感兴趣的文本,在随机时间之后,终端会自动向下滚动到光标所在的位置。
另外,我注意到当xscreensaver运行时,登录gui不需要从键盘输入。您是否知道,在xscreensaver中,有一个“流逝时间”栏,当您开始键入时,它会给您更多的时间(栏数增加)?嗯,在没有我任何投入的情况下增加了一次.
我以为我有一些随机输入的键盘,但如何解决这个烦人的问题?
我一直试图跟踪xev生成的事件,但这是相当困难的。
在终端上,我暂时解决了“键盘上滚动按下”,但这不是一个合理的永久解决方案。正如xscreensaver确认的那样,整个系统都受到了影响。
这是一台笔记本电脑宏基Aspire E1-571 g。我最近安装了Funtoo。我仍在完成配置我的硬件中的每一个部分。
在安装Funtoo之前,我有Arch,而且一切都很好,所以我认为硬件没有问题,只是当前配置的一个问题。
cpu:
Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz, 1383 MHz
Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz, 1400 MHz
Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz, 1350 MHz
Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz, 1472 MHz
keyboard:
/dev/input/event4 AT Translated Set 2 keyboard
mouse:
/dev/input/mice SynPS/2 Synaptics TouchPad
graphics card:
Intel 3rd Gen Core processor Graphics Controller
nVidia VGA compatible controller
sound:
Intel 7 Series/C210 Series Chipset Family High Definition Audio Controller
storage:
Intel 7 Series Chipset Family 6-port SATA Controller [AHCI mode]
network:
eth0 Broadcom NetLink BCM57785 Gigabit Ethernet PCIe
wlan0 Intel Centrino Wireless-N 105 BGN
network interface:
wlan0 WLAN network interface
lo Loopback network interface
eth0 Ethernet network interface
sit0 Network Interface
disk:
/dev/sda KINGSTON SH103S3
partition:
/dev/sda1 Partition
/dev/sda2 Partition
/dev/sda3 Partition
/dev/sda4 Partition
cdrom:
/dev/sr0 HL-DT-ST DVDRAM GT51N
usb controller:
Intel 7 Series/C210 Series Chipset Family USB xHCI Host Controller
Intel 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
Intel 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1
bios:
BIOS
bridge:
Intel 3rd Gen Core processor DRAM Controller
Intel Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
Intel 7 Series/C210 Series Chipset Family PCI Express Root Port 1
Intel 7 Series/C210 Series Chipset Family PCI Express Root Port 2
Intel HM77 Express Chipset LPC Controller
hub:
Linux 4.3.0-gentoo ehci_hcd EHCI Host Controller
Hub
Linux 4.3.0-gentoo ehci_hcd EHCI Host Controller
Hub
Linux 4.3.0-gentoo xhci-hcd xHCI Host Controller
Linux 4.3.0-gentoo xhci-hcd xHCI Host Controller
memory:
Main Memory
unknown:
FPU
DMA controller
PIC
Keyboard controller
PS/2 Controller
Intel 7 Series/C210 Series Chipset Family MEI Controller #1
Intel 7 Series/C210 Series Chipset Family SMBus Controller
Broadcom NetXtreme BCM57765 Memory Card Reader
Broadcom System peripheral
Broadcom System peripheral
Chicony Electronics HD WebCam有什么主意/解决办法吗?
更新:多亏了Stéphane,我发现产生虚假事件的设备是id=5。
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]...and确认我也这么做了:
xinput test-xi2 --root 5产出如下:
EVENT type 13 (RawKeyPress)
device: 5 (5)
detail: 255
valuators:
EVENT type 14 (RawKeyRelease)
device: 5 (5)
detail: 255
valuators:...still不知道怎么解决。我也试图禁用它,但我有一个错误。
发布于 2016-01-06 18:37:18
这不是真正键盘的问题,而是xfce4-power-manager发送的假键事件。
xfce4-power-manager是伪造的虚拟键盘事件(键码255,未分配的)键盘事件(按下键,然后按下键释放,根据源代码,每20秒一次),以确保屏幕保护程序不会在呈现模式下启动(通常,当您在看电影或做演示时)。
这种行为是在1.5.2中添加的(截至2015-01-06年的最新版本),以修复这只虫子,在显示模式下禁用所有可能类型的屏幕保护程序。
这有你受到影响的副作用,那就是已经注意到了那个臭虫。
因此,为了避免出现问题,您应该保留该演示模式。这个问题可能应该作为针对xfce4电源管理器的一个bug来提出,这样就可以恢复更改,或者找到一个更好的#11083补丁。
对这个问题的解释同样有趣的是,我们是如何最终找到罪魁祸首的:
xinput test-xi2 --root报告所有的X输入事件,告诉我们它们的来源和性质。这导致:
EVENT type 13 (RawKeyPress)
device: 5 (5)
detail: 255
valuators:
EVENT type 14 (RawKeyRelease)
device: 5 (5)
detail: 255
valuators:这是一个键按,然后是来自设备5的密钥代码255的键释放事件。
xinput list允许我们识别输入设备:
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]该id=5设备是一个虚拟设备,它充当软件生成事件的源,您可以使用:
xdotool key x或
xte 'key x'如果您在xte下运行该ltrace命令,您会注意到它是这样的:
XStringToKeysym(0x7ffed76983e0, 0x7ffed76983e0, 0, 0x7f34e491deb0) = 120
XKeysymToKeycode(0x23abfe0, 120, 120, 0x7f34e4ce7139) = 53
XTestFakeKeyEvent(0x23abfe0, 53, 1, 0) = 1XTestFakeKeyEvent是发送这些按键事件的标准X。
现在,我们想知道是什么在发送这255个按键事件。我们可以尝试找到当前正在运行的应用程序中的哪个使用该API。
sudo lsof -Fn -nPd txt | sed -n '/proc/!s/^n//p' | sort -u | xargs grep -l XTestFakeKeyEvent或更健壮的对应物:
sudo lsof -Fn -nPd txt | sed -n '/^n\/proc/!s/^n//p' |
sort -u | xargs -d '\n' grep -l XTestFakeKeyEvent列出当前作为可执行文件(txt)打开和命名为任何进程(包括库和可执行文件)的文件,以及其中XTestFakeKeyEvent的grep。
返回了xfce4电源管理器。
剩下要做的就是查看源代码,了解为什么该流程会出现这些XTestFakeKeyEvent。
https://unix.stackexchange.com/questions/253184
复制相似问题