Linuxでは、マウスの中ボタンスクロールをWindowsの自動スクロールのようにすることはできますか?

Linuxでは、マウスの中ボタンスクロールをWindowsの自動スクロールのようにすることはできますか?

自動スクロールが何であるかわからない人なら誰でもChromiumで体験できます。自動スクロール拡張(速度は3に設定されています)Firefoxでは、[自動スクロールを使用]オプションを有効にします。

マウスの中ボタンスクロールを有効にすることは難しくありません。実際に私がしなければならないことは次のとおりです。

xinput set-prop 8 "libinput Scroll Method Enabled" 0, 0, 1 

しかし、それは私が望む方法でまったく機能しません。

私が望む機能:

  • クリックすると「ロックされたスクロール」が有効になるため、ボタンを押さずにマウスを上下に動かすとスクロールする必要があります。マウスの中央ボタンをもう一度押すまで。
  • クリックまたは押すと、開始位置を示す記号が表示されます。
  • クリックまたは押しながらマウスを最初のクリックポイントで上下に動かすと、その方向に「自動スクロール」が有効になります。速度はマウスを移動した距離によって異なり、マウスを開始点に戻すとスクロールが停止します

私が持っている機能:

  • クリックしても何も起こりません(まあ、DEがする必要があることをしたい場合は、Ctrl + Vを使ってアイテムを貼り付けるのに慣れていたので、そのオプションを無効にしたい)。
  • 押し続けると、マウスの動きがスクロールホイールのように動作します。つまり、スクロールするには連続的なマウスの動きが必要で、「自動スクロール」は使用できません。

ご覧のとおり、欠けている機能がたくさんあります。もちろん、最初はChromeの自動スクロール拡張機能を使用でき、Chromeでも機能します。しかし、Windowsで動作する方法であるシステム全体で使用したいと思います。

これで、システム全体で完全な自動スクロール機能を取得するには、いくつかの作業が必要になる可能性があります(またはそれは可能ですか?わかりません...)。実装方法によっては、中間キーマウスを使用している一部のユーザーにも機能することがあります。アプリケーションキーバインディングはボタンに問題を引き起こします(アプリケーションキーバインディングをオーバーライドすることは確かに大きなことではありません)。

しかし、マウスの中ボタンを押したまま自動スクロールを有効にすることができればとても嬉しいです。完全に機能していなくても十分に近づくでしょう。

ベストアンサー1

(私の考えでは、) cestarianが提供したスクリプトを改善し、水平スクロールを望んでいて、Logitechマウスが正しく機能しないという問題もあることを除いて、より良い答えはありません。

さらに、単一ループがはるかに高速であり、同じサイクルで多方向スクロールを可能にするループが多すぎる理由もありません。 :D

xUbuntu 18.04.2 LTSでテストされました。

sudo apt インストール xdotool xsel sxhkd

~/.config/sxkhd/sxhkdrc

~button2
    "~/.config/sxkhd/autoscroll.sh"
@button2

~control + c
    echo -n | xsel -n -i
~control + shift + c
    echo -n | xsel -n -i
~control + x
    echo -n | xsel -n -i

~/.config/sxkhd/autoscroll.sh

#!/bin/dash
# Autoscroll (hold only)

middlemousebutton=2

mousescrollup=4
mousescrolldown=5
mousescrollleft=6
mousescrollright=7

enableverticalscroll=1
enablehorizontalscroll=1

## Danger below :D

echo -n | xsel -n -i
eval $(xdotool getmouselocation --shell)
starty=$Y
startx=$X
toggle=$middlemousebutton
while [ $toggle -eq $middlemousebutton ]
do
    eval $(xdotool getmouselocation --shell)
    curry=$Y
    currx=$X
    if [ $enableverticalscroll -eq 1 ]
    then
        if [ $curry -gt $starty ]
        then
            speedy=$(expr $curry / 100 - $starty / 100)
            if [ $speedy -gt 0 ]
            then
                xdotool click --repeat $speedy --delay 1 $mousescrolldown
            fi
        else
            speedy=$(expr $curry / 100  - $starty / 100  | sed 's:-::')
            if [ $speedy -gt 0 ]
            then
                xdotool click --repeat $speedy --delay 1 $mousescrollup
            fi
        fi
    fi

    if [ $enablehorizontalscroll -eq 1 ]
    then
        if [ $currx -gt $startx ]
        then
            speedx=$(expr $currx / 100 - $startx / 100)
            if [ $speedx -gt 0 ]
            then
                xdotool click --repeat $speedx --delay 1 $mousescrollright
            fi
        else
            speedx=$(expr $currx / 100  - $startx / 100  | sed 's:-::')
            if [ $speedx -gt 0 ]
            then
                xdotool click --repeat $speedx --delay 1 $mousescrollleft
            fi
        fi
    fi

    toggle=$(xinput --list "Virtual core pointer" | grep -i -m 1 "Button state:" | grep -o "[$middlemousebutton]\+")
    sleep 0.02
done

chmod +x ~/.config/sxkhd/autoscroll.sh

sxhkdを追加したことを確認してください。Session and Startup -> Autostart Applications

次回起動すると、すべてがうまく機能します。

おすすめ記事