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


13

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

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

私がこれまでのところ最も近いのはxbindkeys+ xdotoolです。

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

"xdotool click 7"
  shift + b:5

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

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

小さな画面が表示され、水平方向に多くスクロールする必要があります。

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

更新:

xbindkeysと私が望むものを主に行う別の方法がありxmodmapます。

"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

通り抜けるイベントによるとxevShiftもう修飾子として認識されないと思う。たとえば、Shift+ Aを押しても大文字は生成されませんA


1
多くのプログラムでは、Ctrl +矢印を使用して水平スクロールを行うこともできます。
テルドン

1
感謝しますが、Firefoxではこれは機能しません。どこでも機能する「汎用」ソリューションを探しています。
ポールスカスカ14年

たとえば、sudoを使用して、rootとして何かを実行することは問題になりますか?
brm 14

sudoを使用するのは最適ではありません。Shiftキーを押すたびにsudo-ingすることを意味すると思いますか?あなたが考えていることを詳しく説明してもらえますか?
ポールスカスカ14

これは無意味かもしれませんが、ワンス・アポン・ア・タイムこれはで私のために働きました~/.xbindkeysrc.scm。ある時点で失敗しましたが、システムで動作する可能性があります。
スパラフーク14

回答:


2

私は受け入れられる解決策を見つけました。

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

私は現在.xbindkeysrc、トグルボタンを備えたシンプルなものを使用しています:

"~/toggle.sh"
  alt + x

toggle.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

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

今のところは動作するはずです。

誰かがShift「モディファイヤ」としてそれを行う方法を見つけた場合(押されている限りマウス軸が回転します)、私に知らせてください。

編集:Alt+ xは一般的に使用されるホットキーなので、次のように変更しました。

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

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

これは、Ctrlマウスの右ボタンでスクロールホイールの方向を切り替えます。


0

あなたはbtnxを使用することができ、それはGUI設定ツールです

最新のUbuntuパッケージこちら

btnx-configを使用してマウスでボタン検出を行った後、「Scroll Up」とシフトボタン修飾子を、必要なxボタンの押し方にマッピングします。


おかげで、私はそれをfedoraで構築するのに問題があります。
ポールスカスカ14

1
btnxのrpmパッケージを見つけました。修飾子をソースイベントとしてマップする方法が見つかりません(つまり、Shift + WheelUp)。WheelUp から Shift +他のキーにのみマップできます。何か不足していますか?そもそもShift + WheelUpを「検出」しようとしましたが、「ボタンは既にマップされています」と言っていました。どちらの場合も、生コードは0x02010008でした(Shiftが押されていて、押されていません)。btnxは複数の入力デバイスをまったく処理できないと思います(マウス+キーボード)
Paul Schyska 14

0

ここで示唆したように、私はimwheelをインストール~/.imwheelrcし、次のコンテンツで作成しました。

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

その後imwheel -b 45、ターミナルで走りました。私はテストしましたが、高いスクロールとxbindkeyに関連する斜めの問題に気づいていません。

NBは、上下のスクロールのみをキャプチャするように-b 45制限imwheelし、xbindkeysサムボタンのバインド(ブロックなど)をブロックしません。

問題点

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

  • 一貫性がありません。FirefoxとGwenviewをそのまま使用して動作させることはできましたが、InkscapeとGIMPは動作しませんでした。ウィンドウマッチングを使用してInkscape / GIMPに一致しないようにすることもできますが、普遍的に機能させる方法がいくつかあるはずです。
  • さらに悪いことに、通常ズームに使用されるCtrl+のような他のデフォルトイベントを防止しますScroll wheel。のようなものを入れてみControl_L, Up, Control_L|Upました~/.imwheelrcが、これはうまくいきませんでした。
  • imwheelマウスカーソルの下のウィンドウではなく、アクティブなウィンドウに水平スクロールホイールイベントを送信します。これは、スクロールホイールのデフォルトの動作に反します。これCtrlは、上記の点での回避策も最適ではないことを示唆しています。
  • imwheel開発中ではないようです。過去10年間(2004年以降)プレリリースバージョンにこだわっています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.