web-dev-qa-db-ja.com

Shiftキーで水平スクロールをエミュレートする

(垂直)スクロールホイールを使用して押すと、水平スクロールをエミュレートしたい Shift

一部のアプリケーション(Chrom {e、ium})では、これはすでに機能しますが、Xアプリケーションの一般的なソリューションを探しています。

私がこれまでに得た最も近いものはxbindkeys + xdotoolです。

# ~/.xbindkeysrc
"xdotool click 6"
  shift + b:4

"xdotool click 7"
  shift + b:5

問題は、xbindkeysがいくつかのイベントを見逃しているように見え、場合によっては垂直スクロールが「通過」することです。これは非常に迷惑です。 xbindkeysが何らかのポーリングを使用しているようです。

また、1秒あたり何百ものシェルコマンドを生成するのは好きではありません。

画面が小さく、水平方向にたくさんスクロールする必要があります。

一般的な水平スクロールを実現するにはどうすればよいですか?

更新:

xbindkeysxmodmapを使用して、ほとんど私がやりたいことを行う別の方法があります。

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'"
  c:50
"xmodmap -e 'pointer = default'"
  release + shift + c:50

いつ Shift を押したままにすると、ポインタボタン4と5が6と7にマップされます(ボタン4/5は前面の垂直スクロール、6/7は水平スクロールです)。 c:50は左です Shift キー。キーを離すと、デフォルトのポインタマッピングが復元されます。

これにより、「イベントが多すぎる」問題がうまく解決されます。ただし、Shiftキーは通常の修飾子として機能しなくなります。再発行してみました Shift 次のようなxdotoolのプレス/リリースイベント:

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10';  xdotool keydown Shift_L"
  c:50
"xmodmap -e 'pointer = default';  xdotool keyup Shift_L"
  release + shift + c:50

xevによると、 Shift イベントは通過しますが、修飾子として認識されなくなったと思います。たとえば、 Shift+A 大文字のAは生成されません。

13
Paul Schyska

私は私にとって許容できる解決策を見つけました。

使い方が見つかりませんでした Shift または、ホイール軸が押されている間、ホイール軸を回転させるための修飾子としてのその他のキー。

現在、トグルボタン付きの単純な.xbindkeysrcを使用しています。

"~/toggle.sh"
  alt + x

Token.shスクリプトは次のようになります。

#!/bin/sh
on()
{
  xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'
}

off()
{
  xmodmap -e 'pointer = default'
}

if xmodmap -pp | grep -q '4.*6'; then
  off
else
  on
fi

これにより、動作を切り替えることができます。押すと AltX、マウスホイールの軸が回転し、もう一度押すとデフォルトに設定されます。

それは今のところうまくいくはずです。

誰かがそれを行う方法を見つけた場合 Shift 「モディファイア」(マウス軸は押されている間回転します)として、教えてください。

編集: Alt+x よく使われるホットキーですが、次のように変更しました。

(xbindkey '(control "b:3") "toggle-wheel.sh")

(私はギル構成に切り替えたので、上記は.xbindkeysrc.scmという名前のファイルにあるはずです)

これでスクロールホイールの方向が切り替わります Ctrl +マウスの右ボタン。

2
Paul Schyska

ヒントとして ここimwheel をインストールし、次の内容で~/.imwheelrcを作成しました。

".*"
Shift_L, Up, Left
Shift_L, Down, Right

次に、ターミナルでimwheel -b 45を実行しました。テストしましたが、高スクロールとxbindkeysに関連する斜めの問題に気づいていません。

N.B. -b 45imwheelを制限して、上下のスクロールのみをキャプチャし、サムボタンのxbindkeysバインディングをブロックしないようにします(例)。

問題

ただし、これに関連するいくつかの問題があります。

  • それは矛盾しています。 FirefoxとGwenviewですぐに動作させることができましたが、InkscapeとGIMPは動作しませんでした。ウィンドウマッチングを使用してInkscape/GIMPと一致させないこともできますが、それを普遍的に機能させる方法があるはずです。
  • さらに悪いことに、他のいくつかのデフォルトイベントを防止します。 Ctrl+Scroll wheel、通常はズームに使用されます。 Control_L, Up, Control_L|Upのようなものを~/.imwheelrcに入れてみましたが、うまくいきませんでした。
  • imwheelは、マウスカーソルの下のウィンドウではなく、アクティブなウィンドウに水平スクロールホイールイベントを送信します。これは、スクロールホイールのデフォルトの動作とは逆です。これはまた、 Ctrl 上記の点での回避策も最適ではありません。
  • imwheelは現在開発中ではないようです。過去10年間(2004年以降)、プレリリースバージョンにとどまっています。
0
Sparhawk

btnx を使用でき、それは gui config tool です。

最近の buntuパッケージ および ここ

Btnx-configを使用してマウスでボタン検出を行った後、「上にスクロール」とシフトボタン修飾子を任意のxボタンの押下にマップします。

0
RedMage