Fedora 26(Wayland)で内蔵キーボードを無効にするには?

Fedora 26(Wayland)で内蔵キーボードを無効にするには?

Fedora 26をインストールしましたが、内部キーボードが少し奇妙に動作することがわかりました。ボタンが押し続けられています。

内蔵キーボードなしでできるように外部キーボードを使用してください。

PS:これは重複しませんUSBキーボードが接続されているときにノートパソコンのキーボードを無効にする方法は?答えはウェイランドではなく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ルールを使用して常にバックグラウンドでプロセスを実行せずにキーボードを無効にできます。

  1. ランニングsudo evtest。これにより、デバイスとすべての入力デバイスの名前が一覧表示されます。デバイスがの場合、/dev/input/eventX「デバイスイベント番号」はですX。たとえば、内蔵キーボードは次のように表示されます。

    /dev/input/event4:  AT Translated Set 2 keyboard
    

    したがって、私の「デバイスイベント番号」は4です。

  2. evtest「デバイスイベント番号」の入力を求められます。 (私の場合4)それを入力してENTERを押します。キーボードイベントをキャプチャし、次を使用してプロセスを閉じます。CTRL+C

  3. 走る

    udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/input/eventX)
    

    /dev/input/eventX以前に発見されたデバイスはどこにありますか?これにより、デバイスと親デバイスと一致するudevルールが一覧表示されます。バラよりArchiLinux 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"
    
  4. あなたのデバイスとその親デバイスと一致するudevルールを構築すると、それはすべてです。最初に大きな数字で名前を付けて、最後に実行されていることを確認してください。

    デバイスを一致させてから配置します。LIBINPUT_IGNORE_DEVICEそのオプションをゼロ以外の値(例: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"
    
  5. デバイスを再起動します。 udev ルールは、すでに接続されているデバイスではなく、新しく接続されたデバイスにのみ適用されます。

完璧!

答え3

私も同じ問題があります。 Waylandシンセサイザは、ハードウェアキーボードがすべてのクライアントに表示されないように、キーボードの抽象化を生成します。私は次のことを試してみました。

sudo libinput list-devices

私の場合、/dev/input/event6が発生しました。その後、mievの答えとしてevtestを使用できます。

関連情報