web-dev-qa-db-ja.com

スクロールホイールのないトラックボールの治療法?

私はトラックボールを購入しようと考えており、私の選択肢はロジクールトラックマンマーブルです。しかし、その後、スクロールホイールがないことがわかりました。あなたはそれにどのように取り組みますか?間違いなくスクロールホイール付きのトラックボールを購入しますか? Facebookを使ってたくさんスクロールします。

人差し指と中指でクリックしたくないので、トラックマンホイールのように、一部のトラックボールマウスが機能しません。

30
lamwaiman1988

Windowsを使用している場合は、AutoHotKeyを試してみることをお勧めします。他のユーザーは既にマーブルマウスでのスクロールに取り組んでいます(下のスクリプトを使用しました)。

http://www.autohotkey.com/board/topic/4677-wheel-button-emulation-script/

ドライバーに付属するLogitechのソリューションは奇妙です。一度クリックすると4方向スクロールが有効になり、もう一度クリックすると無効になります。押したままスクロールすることはできません。私は彼らのソフトウェアをアンインストールしてしまいました。

13
user1146719

私は同じトラックボールを持っていて、解決策は非常にエレガントです。選択したボタンをクリックすると、ボール自体がスクロールホイールになります。小指で押す右の大きなボタンを選びました。

これはvery便利で、慣れるまで数日しかかかりません。

(マウスまたはトラックボール上の)スクロールホイールは使用できないものであるとすぐに考えるでしょう。私を信じて、それだけの価値があります;-)

利点:

  • 1Dではなく2Dスクロール
  • ホイールよりも速く正確なスクロール
  • 長いスクロールの方が快適です(ボールの慣性のおかげです)。 Facebookの例に最適です。

それなしではもう生きられない。

Linux OSでの設定は難しくありません。 /etc/X11/xorg.confファイルを作成する必要があるだけです(ここの私の設定を参照してください: Xorg.confを編集せずにLinuxでトラックボールを設定してください

詳細はこちら: https://help.ubuntu.com/community/Logitech_Marblemouse_USB

Windowsでは経験はありませんが、設定ツールはトラックボールに付属していると思います。

9
ploum

そのマウス用に特別に開発された大理石のマウススクロールホイールを試すことができます。

マーブルマウスのスクロールホイール、または単にマーブルスクロールは、トラックボールやマウスを使わずにスクロールホイールをシミュレートするように設計された小さなプログラムです。ロジクールマーブルマウス専用に設計されていますが、標準のマウスやトラックボールで動作します。 Windows 2000以降用に設計されています。

マーブルスクロールは、Logicoolのオートスクロール機能とユニバーサルスクロール機能の代替品です。どちらも実際のスクロールホイールを適切にエミュレートせず、どちらにも制限と欠陥があります。

Marble Scrollは、任意のマウスまたはトラックボールで動作し、LogitechのSetPointまたはMouseWareドライバーをインストールする必要はありません。

特徴

  • 3つ以上のボタンを持つマウスにスクロールホイールを追加する
  • スクロールホイールをサポートするほとんどのアプリケーションとの互換性(あらゆるタイプの入力用)
  • 調整可能な加速
  • 調整可能なスクロール距離(「ステップ」ごと-下記参照)
  • 実際のマウスホイールをシミュレートするための段階的スクロール
  • クイック左/右手モード切り替え
  • トレイアイコンをクリックすることで簡単に有効化/無効化
  • システムリソースが小さくて軽い

製品のWebサイトは現在ダウンしているようですが、これは Archive.org にあるサイトのテキストのコピーです。

ダウンロードリンク ここにあります

8
harrymc

AutoHotKeyソリューションと非常によく似た単純な100行のC++代替があります。

  • xボタンの1つを押しながらトラックボールを移動して垂直/水平スクロールホイールイベントを送信し、
  • トラックボールを動かさずにXボタンを押して離すときの中央クリック。

https://github.com/Seelge/TrackballScroll

編集:新しいバージョンはsystray-iconを提供し、Windows 10で動作し、C#に基づいています。

8
Silpion

これが私が使用するAutoHotKeyスクリプトです。左の小さなボタンを押しながらボールを​​上下に転がしてスクロールします。ただし、左の小さなボタンをクリックしても、戻るは実行されます。左/右にスクロールすることもできますが、それは私には敏感すぎたため、ここでコメントアウトしました(;timesX := Abs(movedx) / 4で始まるブロック)。

オリジナルバージョンは http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/ にあります。私はそこに自分のバージョンをanotherperson8923として投稿しました。

$*XButton1::
Hotkey, $*XButton1 Up, XButton1up, off
;KeyWait, XButton1, T0.4
;If ErrorLevel = 1
;{
   Hotkey, $*XButton1 Up, XButton1up, on
   MouseGetPos, ox, oy
   SetTimer, WatchTheMouse, 5
   movedx := 0
   movedy := 0
   pixelsMoved := 0
;   TrayTip, Scrolling started, Emulating scroll wheel
;}
;Else
;   Send {XButton1}
return

XButton1up:
Hotkey, $*XButton1 Up, XButton1up, off
SetTimer, WatchTheMouse, off
;TrayTip
If (pixelsMoved = 0)
{
    ;The mouse was not moved, send the click event
    ; (May want to make it PGUP or something)
    Send {XButton1}
    Send {XButton1Up}
}
return

WatchTheMouse:
MouseGetPos, nx, ny
movedx := movedx+nx-ox
movedy := movedy+ny-oy

pixelsMoved := pixelsMoved + Abs(nx-ox) + Abs(ny-oy)

;timesX := Abs(movedx) / 4
;ControlGetFocus, control, A
;Loop, %timesX%
;{
;    If (movedx > 0)
;    {
;        SendMessage, 0x114, 1, 0, %control%, A ; 0x114 is WM_HSCROLL
;        movedx := movedx - 4
;    }
;    Else
;    {
;        SendMessage, 0x114, 0, 0, %control%, A ; 0x114 is WM_HSCROLL
;        movedx := movedx + 4
;    }
;}

timesY := Abs(movedy) / 4
Loop, %timesY%
{
    If (movedy > 0)
    {
        Click WheelDown
        movedy := movedy - 4
    }
    Else
    {
        Click WheelUp
        movedy := movedy + 4
    }
}   

MouseMove ox, oy
return
4
user318097

Logitechがスクロールホイールシミュレーションを実装しなかったのは、とても残念なことです。彼らのドライバーはそうする機能を約束しますが、それはすべてのアプリケーションで機能するわけではなく、それをまったく役に立たなくします。彼らは完璧なマウスを作るのにとても近かったです! :s

私が見つけた唯一の回避策は AutoHotkey スクリプトを使用することです。それを使用すると、小さな左/右ボタンを上下にスクロールさせることができます。完全に機能しますが、設定するのは本当に面倒です。最初にAutoHotkeyの基本を学ぶ必要があります。そうすることに決めたなら、これが私のAutoHotkeyスクリプトです。 Jerboのオリジナルスクリプト を変更したものです。シングルクリックは通常のペースでスクロールを開始しますが、ダブルクリックまたはトリプルクリックはより速くスクロールを開始します。

; This script remaps the two small buttons on a Logitech Trackman® Marble® Mouse
; to act as scroll up and scroll down

global lastXButton1ClickTime := 0
global nrSubsequentXButton1Clicks := 0

ScrollTheWheel(direction, scrollKey)
{
    now := A_TickCount
    timeSinceLastClick := now - lastXButton1ClickTime 
    lastXButton1ClickTime := now
    if (timeSinceLastClick < 300)
    {
        nrSubsequentXButton1Clicks := nrSubsequentXButton1Clicks + 1
    }
    else
    {
        nrSubsequentXButton1Clicks := 1
    }        

    sleepingFraction := 5

    if (nrSubsequentXButton1Clicks <= 1)
        scrollSpeed := 30
    if (nrSubsequentXButton1Clicks == 2)
        scrollSpeed := 15
    if (nrSubsequentXButton1Clicks >= 3)
        scrollSpeed := 5

    timeSlept := scrollSpeed

    loop 
    {
        if (direction == 1) ; Scroll down
        {
            static downKeyState
            if (scrollKey == 0) 
                GetKeyState, downKeyState, XButton1, P
            else
                GetKeyState, downKeyState, PgDn, P

            if downKeyState = U ; The key has been released, so break out of the loop
               break

            if (timeSlept >= scrollSpeed)
            {
                Send {WheelDown}
                timeSlept = 0                
            }
        }
        else ; Scroll up
        {
            static upKeyState
            if (scrollKey == 0)
                GetKeyState, upKeyState, XButton2, P
            else
                GetKeyState, upKeyState, PgUp, P

            if upKeyState = U ; The key has been released, so break out of the loop
               break            

            if (timeSlept >= scrollSpeed)
            {
                Send {WheelUp}
                timeSlept = 0                
            }
        }   

        Sleep, sleepingFraction
        timeSlept := timeSlept + sleepingFraction
    }    
}

XButton2::
    ScrollTheWheel(0, 0)
    return
XButton1::
    ScrollTheWheel(1, 0)
    return
!PgUp::
    ScrollTheWheel(0, 1)
    return
!PgDn::
    ScrollTheWheel(1, 1)
    return
3
Dimitri C.

ロジクールマーブルマウスを入手したばかりで、スクロールの問題もありました。このスクリプトをAutoHotKeyで作成しました。左のXボタンはスクロールを有効にします。つまり、下にいる間、ボールで垂直および水平にスクロールでき、左および右のボタンでブラウザー内を前後に移動できます。右のXボタンには、中央のボタンと同じアクションがあります。

Windows 7のIM。

#SINGLEINSTANCE FORCE  
GLOBAL status := "basic"
GLOBAL cnt_x
GLOBAL cnt_y

XButton2::MButton

$*XButton1::
    status := "scroll"
    cnt_x := 0
    cnt_y := 0
    MOUSEGETPOS, st_x, st_y
    SETTIMER, _scroll, 30
RETURN

$*XButton1 UP::
    status := "basic"
    SETTIMER, _scroll, OFF
RETURN

_scroll:
    MOUSEGETPOS, cur_x, cur_y
    MOUSEMOVE, st_x, st_y

IF(abs(cur_x-st_x) > abs(cur_y-st_y)) {
    cnt_x := cnt_x + (cur_x-st_x)
    ControlGetFocus, control, A 
    IF (cnt_x > 7) {
        cnt := floor(cnt_x / 8)
        LOOP, %cnt% {
            SendMessage, 0x114, 0, 0, %control%, A
        }
        cnt_x := cnt_x - 8*floor(cnt_x / 8)
    } ELSE IF (cnt_x < -7) {
        cnt := -ceil(cnt_x / 8)
        LOOP, %cnt% {
            SendMessage, 0x114, 1, 0, %control%, A
        }
        cnt_x := cnt_x - 8*ceil(cnt_x / 8)
    }
} ELSE {
    IF (cur_y >= st_y) {
        cnt_y := cnt_y + (cur_y-st_y)**1.2
    } ELSE {
        cnt_y := cnt_y -(st_y-cur_y)**1.2
    }   
    IF (cnt_y > 7) {
        cnt := floor(cnt_y / 8)
        LOOP, %cnt% {
            CLICK WheelUp
        }
        cnt_y := cnt_y - 8*floor(cnt_y / 8)
    } ELSE IF (cnt_y < -7) {
        cnt := -ceil(cnt_y / 8)
        LOOP, %cnt% {
            CLICK WheelDown
        }
        cnt_y := cnt_y - 8*ceil(cnt_y / 8)
    }
}   
RETURN

$*LButton::
    IF (status = "basic") {
        CLICK DOWN Left
    } ELSE IF (status = "scroll") {
        SEND {Browser_Back}
    }
RETURN

$*LButton UP::
    IF (status = "basic") {
        CLICK UP Left
    }
RETURN

$*RButton::
    IF (status = "basic") {
        CLICK DOWN Right
    } ELSE IF (status = "scroll") {
        SEND {Browser_Forward}
    }
RETURN

$*RButton UP::
    IF (status = "basic") {
        CLICK UP Right
    }
RETURN
2
Amiral_JCDG

私はWindows7を使用していて、Kensington Orbitオプティカルトラックボールを使用していますScrollringなし-これは2ボタントラックボールで、ほとんどのAHKスクリプトや他の人が指摘するアプリケーションで必要なXボタンがありません。

ただし、Windows7では MouseImp が機能しています。 ITは構成可能ですが、right-click + rollスクロールの画面を表示します。これはドラッグのようなものなので、ポインタが移動し、一度に1つの画面しか表示されません[更新:スクロールレートは構成可能であるため、「1ページ」以上になる場合があります]。

同時に、ケンジントンの TrackballWorks は、left-click + right-click。残念ながら、一度に1ページずつスクロールして戻ることはできません(どちらか一方)。

これは製品プラグではありません-私が動作することがわかったものだけですこのモデル/トラックボールのタイプ

警告:常に右クリックと左クリックを行っているため、混乱を招く可能性があり、リンクをたどる/ js-アクティブ化したいときにスクロールを停止する必要があります。 :::はぁ:::

1

私はケンジントンから軌道ワイヤレストラックボールを手に入れました、それはかなり素晴らしいです。ボールがあり、両側に両方のボタンがあり、ページを上下にスクロールできるようにするトラックボールの外側に一種の円があります。それは本当に機能し、私はWindowsとMac OSXで使用しています。

1
andremartins

お使いのOSによっては、ボタンの1つを設定して、押したままの状態でポインターを移動することでスクロールを有効にすることができます。例えば。次のスクリプトは、マウスのボタン10(Logitech MX310の「上中央」ボタン)でこれを有効にします。

#!/bin/sh
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 290 10
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 286 1
xinput set-prop "Logitech USB-PS/2 Optical Mouse" 287 6 7 4 5

スクロールホイールが含まれているそのような大理石のマウス(マウス)があります。それ以外の場合は、ホイールなしのマウスでスクロール機能を使用するためにボタンの1つを使用するために、アプリまたはスクリプトが必要になるようです(別の回答へのコメントで、受け入れ可能な解決策ではないことに注意してください)。

それで、「なぜ車輪を再発明するのか?」この場合は格言です。

これらの例では、要素は物理的にインストールされており、多くのタイプから選択できます。以下は2つの例とスタイルです。

wh1

または、次のようなもの: Adesso

wh2

1
Carl B

簡単な(そして人間工学に基づいた、あえて言う)ソリューションは、スクロール機能を左手に置くことです。

これは、左手でマウスを使用するか、左端にスクロールホイールが組み込まれたキーボードを使用するか、Mkey( http://www.seriosoft.org/en/index.php )。

なぜ私はこれがより人間工学的であると思いますか-このアプローチは両手でより均等に緊張を分散させるからです。 (これについての詳細: http://capsoff.org/checklist )。

1
drabsv

Internet Explorerを含むすべてのアプリケーションでスクロールできるWindows 7の別のソリューション:

  1. インストール AutoHotKey
  2. このスクリプトscroll.ahkとしてデスクトップに保存します。
  3. scroll.ahkを右クリックします。
  4. Run Scriptを選択します。
  5. プロンプトが表示されたら確認します。

これにより、トラックボールを移動するときに小さな右ボタンを押したままにすると垂直方向にスクロールします。左の小さなボタンが戻るボタンです。


Erik Elmoreのコードへのリンクが消えた場合は、次のようになります。

;;
;; Emulate_Scrolling_Middle_Button.ahk
;; Author: Erik Elmore <[email protected]>
;; Version: 1.1 (Aug 16, 2005)
;;
;; Enables you to use any key with cursor movement
;; to emulate a scrolling middle button.  While
;; the TriggerKey is held down, you may move the
;; mouse cursor up and down to send scroll wheel
;; events.  If the cursor does not move by the
;; time the TriggerKey is released, then a middle
;; button click is generated.  I wrote this for my
;; 4-button Logitech Marble Mouse (trackball),  
;; which has no middle button or scroll wheel.
;;

;; Configuration

;#NoTrayIcon

;; Higher numbers mean less sensitivity
esmb_Threshold = 7

;; This key/Button activates scrolling
esmb_TriggerKey = XButton2

;; End of configuration

#Persistent
CoordMode, Mouse, Screen
Hotkey, %esmb_TriggerKey%, esmb_TriggerKeyDown
HotKey, %esmb_TriggerKey% Up, esmb_TriggerKeyUp
esmb_KeyDown = n
SetTimer, esmb_CheckForScrollEventAndExecute, 10
return

esmb_TriggerKeyDown:
  esmb_Moved = n
  esmb_FirstIteration = y
  esmb_KeyDown = y
  MouseGetPos, esmb_OrigX, esmb_OrigY
  esmb_AccumulatedDistance = 0
return

esmb_TriggerKeyUp:
  esmb_KeyDown = n
  ;; Send a middle-click if we did not scroll
  if esmb_Moved = n
    MouseClick, Middle
return

esmb_CheckForScrollEventAndExecute:
  if esmb_KeyDown = n
    return

  MouseGetPos,, esmb_NewY
  esmb_Distance := esmb_NewY - esmb_OrigY
  if esmb_Distance
    esmb_Moved = y

  esmb_AccumulatedDistance := (esmb_AccumulatedDistance + esmb_Distance)
  esmb_Ticks := (esmb_AccumulatedDistance // esmb_Threshold) ; floor divide
  esmb_AccumulatedDistance := (esmb_AccumulatedDistance - (esmb_Ticks * esmb_Threshold))
  esmb_WheelDirection := "WheelDown"
  if (esmb_Ticks < 0) {
    esmb_WheelDirection := "WheelUp"
    esmb_Ticks := (-1 * esmb_Ticks)
  }

  ;; Do not send clicks on the first iteration
  if esmb_FirstIteration = y
    esmb_FirstIteration = n
  else {
    Loop % esmb_Ticks {
      MouseClick, %esmb_WheelDirection%
    }
  }

  MouseMove,esmb_OrigX,esmb_OrigY,0
return
1
Dave Jarvis

私は実際にしばらく前にAutoHotkeyを使用してこれのために何かを作成し、ここでも共有することを考えました: Mouse Wheel Emulator

これは、マウスの左ボタンと右ボタンを押したままマウスを動かして、マウスホイールのスクロールをエミュレートします。

マウスの左ボタンと右ボタンを同時にクリックして、中クリックをエミュレートすることもできます。

1
blah238

2つの非従来型オプション

  • トラックボールに加えてApple Magic Trackpadを使用します(これが私の現在の解決策です) http://www.Apple.com/magictrackpad/

  • Leapmotionコントローラーを購入して、トラックボールに加えて使用します。デバイスの前で手を振って上下にスクロールします。 https://www.leapmotion.com/product

enter image description here

画像クレジット http://www5.pcmag.com/media/images/393268-leap-motion-controller.jpg

1
spuder

別のTrackman Marbleユーザーがここにいます。

スクロールエミュレーションに X-Mouse Button Control を使用しています。この機能の実装は(まだ?)完璧ではありませんが、独自のSetPoint™ソフトウェアでのLogitechの実装よりもはるかに使いやすいです。

AutoHotKeyをいじったり、うまく機能するものを探したりしたくない人には、XMBCをお勧めします。

0
Killy.MXI