터미널을 사용하면서 귀찮은 문제가 있는데 어떻게 표현해야 할지 몰라서 구글에서 해결 방법을 찾을 수 없습니다.
터미널에 텍스트를 로드하고(예: dmesg 이후) 관심 있는 텍스트 비트를 찾기 위해 위로 스크롤하려고 하면 임의의 시간이 지나면 터미널이 자동으로 커서가 있는 위치로 아래로 스크롤됩니다.
또한, xscreensaver가 실행 중일 때 키보드 입력 없이 로그인 GUI가 나타나는 것을 발견했습니다. xscreensaver에 입력을 시작할 때 더 많은 시간(열이 증가함)을 제공하는 "경과 시간" 열이 있다는 것을 알고 계셨습니까? 글쎄, 내가 입력하지 않으면 한 번 증가합니다 ...
키보드에서 임의의 입력이 있는 줄 알았는데, 이 짜증나는 문제를 어떻게 해결할 수 있을까요?
xev에 의해 생성된 이벤트를 추적하려고 시도했지만 매우 어렵습니다.
터미널에서 "키보드를 누를 때 스크롤"을 선택 취소하여 일시적으로 문제를 해결했지만 이는 합리적으로 영구적인 해결 방법은 아닙니다. xscreensaver가 확인한 바와 같이 전체 시스템이 영향을 받았습니다.
Acer Aspire e1-571g 노트북입니다. 최근에 Funtoo를 설치했습니다. 아직 각 하드웨어의 임시 구성을 마무리하는 중입니다.
Funtoo를 설치하기 전에는 Arch Linux가 있었고 모든 것이 잘 작동했기 때문에 하드웨어에는 아무런 문제가 없고 현재 구성에만 문제가 있다고 생각했습니다.
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)]
...그리고 확인하기 위해 저도 이 작업을 수행했습니다.
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:
...아직도 해결 방법을 모르겠습니다. 비활성화하려고 시도했지만 오류가 발생했습니다.
답변1
이는 실제 키보드의 문제가 아니라 가짜 키 이벤트가 전송되는 문제입니다 xfce4-power-manager
.
xfce4-power-manager
척하는 거야가짜(키코드 255, 할당되지 않음) 프리젠테이션 모드(보통 영화를 보거나 프리젠테이션을 할 때)에서 화면 보호기가 시작되지 않도록 하는 키보드 이벤트(키를 누른 후 키를 놓음, 소스 코드에 따라 20초마다 한 번씩) 프로모션 회의).
이 동작은 1.5.2(2015-01-06 기준 최신 버전)에 추가되어 수정되었습니다.이 오류데모 모드에서 가능한 모든 유형의 화면 보호기를 비활성화합니다.
이것은 당신에게 영향을 미치는 부작용을 가질 수 있습니다이미 해당 오류를 발견했습니다..
그래서 두고 싶다고?데모 모드문제를 피하기 위해. 이 문제는 xfce4-power-manager에 대한 버그로 제기되어 변경 사항을 되돌리거나 #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:
키 코드가 255인 기기 5의 키 출시 이벤트입니다.
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) = 1
XTestFakeKeyEvent는 이러한 키 이벤트를 전송하기 위한 표준 X API입니다.
이제 우리는 무엇이 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-power-manager를 반환합니다.
이제 남은 일은 프로세스가 이러한 XTestFakeKeyEvent를 실행하는 이유를 소스 코드에서 찾는 것입니다.