태그 보관물: trackball

trackball

스크롤 휠이없는 트랙볼에 대한 해결책? 알았습니다. 그걸 어떻게 다루나요? 스크롤 휠로

나는 트랙볼을 구매하려고 생각하고 내 옵션은 로지텍 트랙맨 대리석입니다. 그러나 나는 스크롤 휠이 없다는 것을 알았습니다. 그걸 어떻게 다루나요? 스크롤 휠로 트랙볼을 구매하고 싶습니까? 나는 페이스 북을 사용하여 많이 스크롤합니다.

내 검지와 가운데 손가락으로 클릭하고 싶지 않으므로 트랙맨 휠과 같은 일부 트랙볼 마우스가 작동하지 않습니다.



답변

Windows를 사용하는 경우 AutoHotKey를 사용해보십시오. 다른 사용자는 이미 Marble Mouse로 스크롤을 해결했습니다 (스크립트를 맨 아래에 사용했습니다).

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

드라이버와 함께 제공되는 Logitech의 솔루션은 이상합니다. 한 번 클릭하여 4 방향 스크롤을 활성화하고 다시 클릭하여 비활성화하십시오. 당신은 내가 뒤를 따르는 것을 잡고 스크롤 할 수 없습니다. 나는 그들의 소프트웨어를 제거했다.


답변

나는 동일한 트랙볼을 가지고 있으며 솔루션은 매우 우아합니다. 선택한 버튼을 클릭하면 볼 자체가 스크롤 휠이됩니다. 나는 작은 손가락으로 누르는 큰 오른쪽 버튼을 선택했습니다.

이것은 매우 편리하며 익숙해 지려면 며칠 밖에 걸리지 않습니다.

스크롤 휠 (마우스 또는 트랙볼)은 사용할 수없는 것입니다. 날 믿어, 그만한 가치가있다 😉

장점 :

  • 1D 대신 2D 스크롤
  • 휠보다 빠르고 정확한 스크롤
  • 긴 스크롤에 더 편안합니다 (볼의 관성 덕분에). 페이스 북의 예에 딱 맞습니다.

그것 없이는 더 이상 살 수 없습니다.

모든 Linux OS에서 구성하는 것은 어렵지 않습니다. /etc/X11/xorg.conf 파일 만 생성하면됩니다 (내 구성 참조 : Xorg.conf를 편집하지 않고 Linux에서 트랙볼 구성 )

자세한 내용은 https://help.ubuntu.com/community/Logitech_Marblemouse_USB 에서 확인할 수 있습니다.

Windows에서는 경험이 없지만 트랙볼과 함께 구성 도구가 제공된다고 생각합니다.


답변

해당 마우스를 위해 특별히 개발 된 Marble Mouse Scroll Wheel을 사용해 볼 수 있습니다.

Marble Mouse Scroll Wheel 또는 Marble Scroll은 트랙볼이나 마우스없이 스크롤 휠을 시뮬레이션하도록 설계된 작은 프로그램입니다. Logitech Marble Mouse를 위해 특별히 설계되었지만 모든 표준 마우스 또는 트랙볼과 함께 사용할 수 있습니다. Windows 2000 이상을 위해 설계되었습니다.

Marble Scroll은 Logitech의 Autoscroll 및 Universal Scroll 기능을 대체합니다. 실제 스크롤 휠을 올바르게 에뮬레이션하지 않으며 제한과 결함이 있습니다.

Marble Scroll은 마우스 또는 트랙볼과 함께 작동하며 Logitech의 SetPoint 또는 MouseWare 드라이버를 설치할 필요가 없습니다.

풍모

  • 두 개 이상의 버튼이있는 마우스에 스크롤 휠 추가
  • 스크롤 휠을 지원하는 대부분의 응용 프로그램과의 호환성 (모든 유형의 입력)
  • 조정 가능한 가속
  • 조정 가능한 스크롤 거리 ( “단계별”-아래 참조)
  • 실제 마우스 휠을 시뮬레이션하기위한 단계별 스크롤
  • 빠른 왼쪽 / 오른손 모드 스위처
  • 트레이 아이콘을 클릭하여 빠른 활성화 / 비활성화
  • 작고 가벼운 시스템 리소스

제품의 웹 사이트가 현재 다운 된 것으로 보이지만 다음은 Archive.org 에 사이트 텍스트의 사본입니다 .

다운로드 링크 는 여기에 있습니다 .


답변

AutoHotKey 솔루션과 매우 유사한 간단한 100 라인 C ++ 대안이 있습니다.

  • X- 버튼 중 하나를 누른 상태에서 트랙볼을 움직여 수직 / 수평 스크롤 휠 이벤트 보내기
  • 트랙볼을 움직이지 않고 X- 버튼을 눌렀다 놓을 때 중간 클릭.

https://github.com/Seelge/TrackballScroll

편집 : 최신 버전은 시스템 트레이 아이콘을 제공하고 Windows 10에서 작동하며 C #을 기반으로합니다.


답변

내가 사용하는 AutoHotKey 스크립트는 다음과 같습니다. 왼쪽의 작은 버튼을 누른 상태에서 공을 위 / 아래로 굴려서 스크롤합니다. 그러나 왼쪽의 작은 버튼을 클릭해도 여전히 BACK이 수행됩니다. 또한 왼쪽 / 오른쪽으로 스크롤 할 수 있지만 너무 민감하여 여기에 주석 처리되어 있습니다 (로 시작하는 블록 ;timesX := Abs(movedx) / 4).

http://www.autohotkey.com/board/topic/30816-simulate-scroll-wheel-using-right-mouse-button/ 에서 원본 버전을 찾았습니다
. 나는 거기에 다른 사람 8923으로 내 버전을 게시했습니다.

$*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

답변

Logitech이 스크롤 휠 시뮬레이션을 구현하지 않은 것은 부끄러운 일입니다. 드라이버는 그렇게 할 기능을 약속하지만 모든 응용 프로그램에서 작동하지는 않으므로 매우 쓸모가 없습니다. 그들은 완벽한 마우스를 만드는 데 너무 가까웠습니다! :에스

내가 찾은 유일한 해결 방법은 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

답변

방금 Logitech Marble 마우스를 얻었고 스크롤하는 데 문제가있었습니다. AutoHotKey에서이 스크립트를 만들었습니다. 왼쪽 X 버튼은 스크롤을 가능하게합니다. 즉, 아래쪽으로 공을 사용하여 세로 및 가로로 스크롤 할 수 있으며 브라우저에서 왼쪽 및 오른쪽 버튼을 사용하여 앞뒤로 이동할 수 있습니다. 오른쪽 X 버튼은 중간 버튼과 같은 동작을합니다.

윈도우 7에 임.

#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