私は親指の下にトラックボールを持つカスタムキーボードを作りました。私はここでXorgを使用していますが、XとWayland(ソリューションにディスプレイサーバーが含まれている場合)のソリューションを見つけることに非常に興味があります。
答え1
シミュレートされた垂直および水平スクロールの使用libinput
運転手evdev
は出身ですデクターズ答えは垂直スクロールシミュレーションのみをサポートします。 (私のように)水平にスクロールしたい場合は、libinput
ドライバを使用して次のことを実行できます。
詳細は次のマンページにあります
libinput(4)
。オプション「スクロールボタン」「int」
ボタンをスクロールボタンとして指定します。もしスクロールモードはいボタン論理的にボタンを押している間、x / y軸の移動はスクロールイベントに変換されます。
オプション "ScrollMethod" "文字列"
スクロール方法を有効にします。許容値はなし、2本指、エッジ、ボタン。すべてのオプションがすべてのデバイスでサポートされているわけではなく、オプションがサポートされていない場合は、デバイスのデフォルトのスクロールオプションが使用されます。
たとえば、
Section "InputClass" Identifier "Some Trackball" # ... Stuff to match your trackball, see xorg.conf(5) Driver "libinput" Option "ScrollMethod" "button" Option "ScrollButton" "4" # Or whatever button suits your needs EndSection
答え2
トラックボールを使ったマウスホイールシミュレーション
既存のドライバ設定オプションを使用して、必要なものと同様の操作を実行したり、独自のドライバを作成したりできます。
これロジクールM570USBレシーバーを搭載したワイヤレストラックボールです。つまり、次のように表示されます。 高圧ガス放電管デバイスとマウスイベントが送出されます。入力するカーネル層にあり、そのデバイス/dev/event
から読み取ることができます。
その後、Xドライバはevdev
ドライバを使用してこのレイヤからイベントを読み取り、それをXイベントに変換します。私はウェイランドについてはよくわかりませんが、そこでも同様に機能すると思います。
1)evdev
ドライバにはトラックボールでマウスホイールをシミュレートするオプションがすでに含まれていますman evdev
。を参照してください。最も重要なこと
オプション "EmulateWheel" "ブール"
「ホイール」シミュレーションを有効/無効にします。スクロールホイールエミュレーションとは、特定の実際のボタンを押しながらマウスを動かしたときにボタンを押す/解除するイベントをシミュレートすることを意味します。ホイールボタンイベント(通常ボタン4と5)は通常スクロールに使用されます。ホイールシミュレーションは、トラックボールを使用してホイールのような動きを得るのに便利です。
オプション "EmulateWheelButton" "整数"
ホイールシミュレーションモードを有効にするには、どのボタンを押すかを指定します。このボタンを押すと、Xおよび/またはYポインタの移動により、XAxisMappingおよびYAxisMapping設定で指定されたボタン押下/解除イベントが生成されます。ボタンが0でEmulateWheelがオンの場合、デバイスのすべての動きがホイールイベントに変換されます。デフォルト:4。
したがって、これはキーボードショートカットの代わりにトラックボールボタンを使用して機能します(ドライバはキーボードではなくマウスでのみイベントを表示できるため)、変換されます。移動する代わりにホイールイベントに回って。
2)複数の既存のドライバを修正して独自のドライバを作成します。キーを押してホイールシミュレーションを実行するには、キーボードとマウスドライバの組み合わせが必要です。
ソースコードカーネル入力レイヤーdrivers/input
カーネルツリーにあります。
ソースコードevdevXドライバが含まれています。xorg/driver/xf86-input-evdev/tree/src/evdev.c。
キーボードドライバは、使用しているキーボードの種類によって異なります。