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


30

私はトラックボールを購入することを考えており、私の選択肢はロジクールのトラックマン大理石です。しかし、その後、スクロールホイールがないことがわかりました。どのようにそれに取り組みますか?スクロールホイール付きのトラックボールを絶対に買いたいですか?私はfacebookを使用してたくさんスクロールします。

人差し指や中指でクリックしたくないので、トラックマンホイールなど、一部のトラックボールマウスは動作しません。


Logitechのトラックマンホイールをお試しください。有線または無線モデルを提供します。
モアブ

人差し指と中指でクリックしたくないので、ボールを中心にしたトラックボールが必要です。ありがとう。
lamwaiman1988

通常、マウスソフトウェアを使用してこのような設定を行うことができます。そこからさまざまなことを行うことができます(トラックボールの移動中に右クリックボタンを押し続けるなど)。これは1年前に投稿しので、あなたはおそらくすでにあなたの問題をすでに修正していると思われます。そうでない場合は、幸運を祈ります。
HelpingHand

@HelpingHandいいえ、まだ実行可能な解決策が見つかりませんでした。現在、スクロールにはPageUpとPageDownを使用しています。
lamwaiman1988

回答:


13

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

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

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


このソリューションは機能しますが、トラックボールの小さな左ボタンのみをサポートするため、Webページのデフォルトの「戻る」機能を無効にします。とにかく、私は数日間試してからこの答えを受け入れるかもしれません。
lamwaiman1988

注:AHKスクリプトは、Xボタン付きのトラックボール、または4つ以上のボタンのトラックボールでのみ機能します。
マイケルポールコニス14

別のボタンを使用するようにスクリプトを更新するのは非常に簡単です。上部の変数の割り当ての上にコメントがあります。「XButton1」を別の値に変更して、代わりにそのボタンを使用します。AHKヘルプファイル([スタート]メニューからAHKを実行する)には、[キー、マウスボタン、およびジョイスティックコントロールのリスト]の下に特別なキーのリストがあります。
ジェームズB

9

私は同じトラックボールを使用しており、ソリューションは非常にエレガントです。選択したボタンをクリックすると、ボール自体がスクロールホイールになります。小指で押す大きな右ボタンを選択しました。

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

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

利点:

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

私はそれなしではもう生きられません。

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

詳細については、https//help.ubuntu.com/community/Logitech_Marblemouse_USBをご覧ください。

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


2
私の作業環境はほとんどが窓なので、これは私にとって実行可能なオプションではなく、これを窓に移植する方法がわかりません。
lamwaiman1988

8

そのマウス用に特別に開発されたMarble Mouse Scroll Wheelを試すことができます:

マーブルマウススクロールホイール、または単にマーブルスクロールは、トラックボールやマウスのないスクロールボールをシミュレートするために設計された小さなプログラムです。Logitech Marble Mouse用に特別に設計されましたが、標準のマウスまたはトラックボールで使用できます。Windows 2000以降向けに設計されています。

Marble Scrollは、LogitechのAutoscrollおよびUniversal Scroll機能の代替品です。どちらも実際のスクロールホイールを適切にエミュレートせず、どちらにも制限と欠陥があります。

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

特徴

  • 3つ以上のボタンがあるマウスにスクロールホイールを追加する
  • スクロールホイールをサポートするほとんどのアプリケーションとの互換性(あらゆるタイプの入力に対して)
  • 調整可能な加速
  • 調整可能なスクロール距離(「ステップ」ごと-以下を参照)
  • 実際のマウスホイールをシミュレートするステップスクロール
  • クイック左/右利きモードスイッチャー
  • トレイのアイコンをクリックして、クイック有効化/無効化
  • システムリソースの小型軽量

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

ダウンロードリンクはこちらです。


Windows 8ではうまく機能します。
ジャスティナスデュドゥナス

これは、Win7および8でも引き続き機能します。マウスの[戻る]ボタンを押したままにすると、トラックボールを使用してスクロールできます。それでも、戻るボタンを戻るボタンとして使用できます。基本的には、何も奪うことなく機能を追加しました。最高の種類のソリューション。
japzone 14

1
Windows 10では確実に動作していないようです:(
askvictor

1
リンクされたダウンロードミラーはマルウェアとして表示されます。誤検知であるかどうかはわかりませんが、今のところは変更しません。
ジェームズB

1
私は何年も使用してきましたが、Windows 8まで正常に動作し、信頼性が低下しました。Win 10で試したことはありません。返信元の著者にメールを送り(!)、ソースコードを失ったとしても、その方法の基本的な要点を教えてくれました。彼が私に与えた要点は、この他の答えがしたことです:superuser.com/a/782571/127024-
ヨハン

8

AutoHotKeyソリューションに非常に似ている、単純な100行のC ++の代替があります。

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

https://github.com/Seelge/TrackballScroll

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


このソリューションは、私が試したどのAutoHotKeyスクリプトよりも優れています。これらはすべて、「マウスを元の位置に戻す」時間駆動型のイベントのため、迷惑な「カーソルジグル」に悩まされます。スクロール。この単純なTrackballScroll実行可能ファイルには、このような制限はなく、非常にうまく機能します。唯一の注意点は、この記事の執筆時点では、Windows 10 Creator's Updateで確実に動作しないことです。github.com
Ben Johnson

私はこれを何年も使用していて、それを愛していました(1年以上前にこの答えを+1しました)が、先週Windows 10に切り替えた後、他のコメントで言及されたバグがまだないことを指摘したいと思いますtは修正され、信頼性が低いため、実際には使用できません。
mtraceur

4

これが私が使用する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

右クリックを使用する場合は、「XButton1」を「RButton」に置き換えます。
マットウォルク14

これは私にとってほぼ完璧に機能していますが、スクロール操作をよりスムーズにする方法はありますか?私は垂直スクロールのためにSendMessageとWheelUp / Downの両方のメソッドを試しましたが、どちらも「ジャンプ」を行います
-askvictor

3

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

PageUp / PageUpキーを直接押すこともできます
。...-lamwaiman1988

2

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

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

あきらめて、キーボードの上下キーを使いました。また、スクロールバーの空きスペースを押して、ページを上下に移動します。
lamwaiman1988

1

ご使用の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

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

  • トラックボールに加えてApple Magic Trackpadを使用します。(これが私の現在のソリューションです) http://www.apple.com/magictrackpad/

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

ここに画像の説明を入力してください

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


1

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

これは、左手でマウスを使用するか、左端に内蔵スクロールホイールを備えたキーボードを使用するか、Mkey(http://のようなプログラムでプログラム可能なキーパッドのキーにスクロール機能を割り当てることで実現できます。 www.seriosoft.org/en/index.php)。

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


1

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

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

同時に、KensingtonのTrackballWorksは、でページを下にスクロールするように設定されていますleft-click + right-click。残念ながら、一度にページをスクロールバックすることはできません(どちらか一方)。

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

警告:あなたは常に右クリックと左クリックをしているので、混乱を招く可能性があり、スクロール停止したいだけでリンクがフォロー/ jsでアクティブ化される可能性があります。:::ため息:::


1

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


1

しばらく前にAutoHotkeyを使用して実際に何かを作成し、ここでも共有すると思いました:マウスホイールエミュレーター

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

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


1

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

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

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


Erik Elmoreのコードへのリンクが消えた場合、ここにあります:

;;
;; Emulate_Scrolling_Middle_Button.ahk
;; Author: Erik Elmore <erik@ironsavior.net>
;; 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

これありがとう!私は、このスクリプトには、2つの小さな修正製:変更XButton2XButton1私は左のボタンを好むように、そして追加*の前%esmb_TriggerKey%で2行で#Persistent、彼らが開始するので、セクションHotkey, *%esmb_TriggerKey%。後者は修飾キーで完璧に機能するため、たとえばCtrl + Scrollが機能します。
シンコデナダ

0

ここに別のトラックマン大理石のユーザー。

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

AutoHotKeyをいじりたくない人にはXMBCをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.