Fedora 26을 설치했는데 내부 키보드가 조금 이상하게 동작하는 것을 발견했습니다. 버튼이 계속 눌러져 있습니다.
내장 키보드 없이도 할 수 있도록 외부 키보드를 사용합니다.
추신 : 이것은 중복되지 않습니다USB 키보드가 연결되어 있을 때 노트북 키보드를 비활성화하는 방법은 무엇입니까?대답은 Wayland가 아니라 Xorg이기 때문입니다.
답변1
시도해 볼 수는 없지만 원치 않는 장치의 입력을 "잡아" evtest
다른 프로세스로 전달되지 않도록 할 수 있습니다. 그것에서 장치를 찾으십시오 ls /dev/input/by-id/
. 예를 들어, /dev/input/by-id/usb-05f3_0007-event-kbd
를 가리키는 심볼릭 링크가 있습니다 ../event2
. 아마도 내장 키보드에도 USB가 아닌 유사한 "kbd"가 있어야 할 것입니다. 그럼 당신은 시도해 볼 수 있습니다
sudo evtest --grab /dev/input/event2
해당 파일이나 링크에 있습니다.
답변2
udev를 사용하여 키보드를 비활성화하는 방법
이렇게 하면 udev 규칙을 사용하여 항상 백그라운드에서 프로세스를 실행하지 않고도 키보드를 비활성화할 수 있습니다.
달리기
sudo evtest
. 그러면 장치와 모든 입력 장치의 이름이 나열됩니다. 장치가 인 경우/dev/input/eventX
"장치 이벤트 번호"는 입니다X
. 예를 들어, 내 내장 키보드는 다음과 같이 나열됩니다./dev/input/event4: AT Translated Set 2 keyboard
따라서 내 "장치 이벤트 번호"는 4입니다.
evtest
"장치 이벤트 번호"를 묻는 메시지가 나타납니다. (내 경우에는4
) 그것을 입력하고 ENTER를 누르세요. 키보드 이벤트를 캡처한 다음 다음을 사용하여 프로세스를 닫으십시오.CTRL+C
달리기
udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/input/eventX)
/dev/input/eventX
이전에 발견된 장치는 어디에 있습니까? 그러면 장치 및 상위 장치와 일치하는 udev 규칙이 나열됩니다. 바라보다아치리눅스 udev 문서자세한 내용은.내 경우에는 다음과 같이 나열되어 있습니다.
Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device '/devices/platform/i8042/serio0/input/input4/event4': KERNEL=="event4" SUBSYSTEM=="input" DRIVER=="" ATTR{power/control}=="auto" ATTR{power/runtime_active_time}=="0" ATTR{power/runtime_status}=="unsupported" ATTR{power/runtime_suspended_time}=="0" looking at parent device '/devices/platform/i8042/serio0/input/input4': KERNELS=="input4" SUBSYSTEMS=="input" DRIVERS=="" ATTRS{capabilities/abs}=="0" ATTRS{capabilities/ev}=="120013" ATTRS{capabilities/ff}=="0" ATTRS{capabilities/key}=="10000 c020000000000 0 0 700f02000003 3802078f870f401 febfffdfffefffff fffffffffffffffe" ATTRS{capabilities/led}=="7" ATTRS{capabilities/msc}=="10" ATTRS{capabilities/rel}=="0" ATTRS{capabilities/snd}=="0" ATTRS{capabilities/sw}=="0" ATTRS{id/bustype}=="0011" ATTRS{id/product}=="0001" ATTRS{id/vendor}=="0001" ATTRS{id/version}=="ab41" ATTRS{inhibited}=="0" ATTRS{name}=="AT Translated Set 2 keyboard" ATTRS{phys}=="isa0060/serio0/input0" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_time}=="0" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_suspended_time}=="0" ATTRS{properties}=="0" ATTRS{uniq}=="" looking at parent device '/devices/platform/i8042/serio0': KERNELS=="serio0" SUBSYSTEMS=="serio" DRIVERS=="atkbd" ATTRS{bind_mode}=="auto" ATTRS{description}=="i8042 KBD port" ATTRS{drvctl}=="(write-only)" ATTRS{err_count}=="0" ATTRS{extra}=="0" ATTRS{firmware_id}=="PNP: PNP0303" ATTRS{force_release}=="369-370" ATTRS{id/extra}=="00" ATTRS{id/id}=="00" ATTRS{id/proto}=="00" ATTRS{id/type}=="06" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_time}=="0" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/wakeup}=="disabled" ATTRS{power/wakeup_abort_count}=="" ATTRS{power/wakeup_active}=="" ATTRS{power/wakeup_active_count}=="" ATTRS{power/wakeup_count}=="" ATTRS{power/wakeup_expire_count}=="" ATTRS{power/wakeup_last_time_ms}=="" ATTRS{power/wakeup_max_time_ms}=="" ATTRS{power/wakeup_total_time_ms}=="" ATTRS{scroll}=="0" ATTRS{set}=="2" ATTRS{softraw}=="1" ATTRS{softrepeat}=="0" looking at parent device '/devices/platform/i8042': KERNELS=="i8042" SUBSYSTEMS=="platform" DRIVERS=="i8042" ATTRS{driver_override}=="(null)" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_time}=="0" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_suspended_time}=="0" looking at parent device '/devices/platform': KERNELS=="platform" SUBSYSTEMS=="" DRIVERS=="" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_time}=="0" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_suspended_time}=="0"
귀하의 장치와 그 상위 장치와 일치하는 udev 규칙을 구축하면 그게 전부입니다. 처음에 더 큰 숫자로 이름을 지정하여 마지막으로 실행되는지 확인하세요.
장치를 일치시킨 후 배치하십시오.
LIBINPUT_IGNORE_DEVICE
해당 옵션을 0이 아닌 값(예: 1)으로 설정하십시오. 보다특정 장치 무시에 대한 libinput 지침자세한 내용은.예를 들어, 이것은 내 것입니다
/etc/udev/rules.d/99-ignore-my-device.rules
.KERNELS=="input4", SUBSYSTEMS=="input", ATTRS{id/product}=="0001", ATTRS{id/vendor}=="0001", ATTRS{id/version}=="ab41", ENV{LIBINPUT_IGNORE_DEVICE}="1"
장치를 다시 시작하십시오. udev 규칙은 이미 연결된 장치가 아닌 새로 연결된 장치에만 적용됩니다.
완벽한!
답변3
나는 같은 문제를 가지고있다. Wayland 합성기는 하드웨어 키보드가 모든 클라이언트에 표시되지 않도록 키보드에 대한 추상화를 생성합니다. 나는 다음을 시도했고 효과가있었습니다.
sudo libinput list-devices
내 경우에는 /dev/input/event6이 발생했습니다. 그런 다음 meuh의 답변으로 evtest를 사용할 수 있습니다.