web-dev-qa-db-ja.com

Linuxでのトラックポイントのミドルクリックとミドルクリックのスクロール

EDIT: TL; DRバージョン(ちょっと):3つのボタンがあるマウスで、xorgでミドルボタンエミュレーションを使用したまま、実際のミドルボタンを無効にすることはできますか?

フルバージョン:

トラックポイント付きのLenovoキーボードを購入し、Linux/xorgでうまく機能させようとしています。問題は、ミドルクリックスクロール(ミドルボタンを押したまま、トラックポイントを使用してスクロールする)を実行すると、最初にミドルボタンダウンイベントが送信され、もちろんテキストを貼り付けたり、リンクなどを開いたりするときに気づきました。あなたがいる場所。スクロールは問題なく機能しますが、このようには役に立ちません。

そこで、xinput set-button-map <id> 1 0 3でミドルクリックを無効にしてみました。これでスクロールが機能し、スクロール前のボタンダウンイベントはありませんが、必要なときに中クリックを使用することもできません。

だから、私は真ん中のボタンのエミュレーションを有効にするだけだと思いました。どうやらミドルクリックを無効にすると、エミュレーションも無効になります。これは、ミドルクリックを再度有効にするとエミュレーションが機能するが、そうでない場合は機能しないためです。

だから、私はミドルクリックで貼り付けなくても生きることができ、FirefoxはCtrl + Clickで新しいタブにリンクを開くことができると思いました。ただし、これは通常のリンクでのみ機能します。あなたが奇妙なリンクを持っているなら、それは新しいタブでリンクを開く唯一の方法はミドルクリックであるようです(これはctrl + clickが... wtfではない場合でも機能しますか?)。さらに、片手でCtrlキーを押しながらクリックすると、左クリックと右クリックよりも多くの作業が必要になります。

何をすべきか?理想的には、ミドルクリックスクロールとミドルクリックエミュレーションを維持しながら、実際のミドルボタンからのミドルクリックイベントを無効にしたいと思います。または、ボタンを押しても何も起こらないように、どういうわけか中央のボタンをプログラムします。次に、ボタンを押したままトラックポイントを移動すると、スクロールが発生します。ボタンダウンとボタンアップの間に何も起こらない場合は、ボタンアップ時にミドルクリックイベントが送信されます。実際、この2番目のソリューションはおそらく理想的です。

他の提案も歓迎します。注:奇妙なキーボードマッピングが気に入らないため、Chromeブラウザ(それが機能するかどうかはわかりません)に切り替えることはできません。また、もっと「グローバル」修正。

1
nonpop

さて、どうやらこれはすでに実装されているようです。 xinput set-prop <device-id> "Evdev Wheel Emulation" 1と言わなければなりません(なぜそれがほとんどなくても機能したのだろうか)。次に、タイムアウトを制御して、それより短いクリックが通常のミドルクリックになるようにすることができます。

しかし、それは完璧ではありません。タイムアウトする前にスクロールを開始すると、とにかくクリックイベントが送信されます。ドライバーのハッキングを伴わない2つの解決策があります:1)タイムアウトを0に設定し、ミドルクリックエミュレーションを使用する(現在は機能します)、または2)スクロールする前にしばらく待つことを学ぶ。どちらも理想的ではありませんが、今のところ問題ありません。

2
nonpop