u/Aggressive_Prior7795

Honeycomb Echo trim wheel issue/fix

Hello, I recently picked up a honeycomb echo controller to play DCS while on the go. I was satisfied with the controller till I tried binding the trim wheel. I found that the trim wheel was unpredictable and often scrolled seemingly random amounts. After further inspection and troubleshooting I found that the controller was outputting 4 times super quickly per physical detent and also sometimes outputs twice in between the detents. I am not sure if this is fixable with some sort of firmware update or not so I took matter into my own hands as it seems to be an issue that some other people have and not just a faulty controller.

I used a free program called autohotkey to write a script that debounces the trim wheel and rebinds the denounced output to a mouse scroll for you to bind in your program of choice instead of the trim wheel.

This is not an elegant or ideal solution but I was able to make the trim wheel usable for my use case. It is likely you will have to play with the configuration of the script to better match your use case or control responsiveness preference.

Step 1: download autohotkey v2

Step 2: In autohotkey create a new blank script named debounce

Step 3: open the script you just created with a text editor of your choosing. Notepad will suffice.

Step 4: copy and paste this text into the file

#Requires AutoHotkey v2.0

Persistent

; =========================

; CONFIGURATION SECTION

; =========================

ControllerNumber := 1 ; which controller to use

ButtonDown := 24 ; button for scroll down

ButtonUp := 23 ; button for scroll up

ScrollLockTime := 200 ; ms between opposite directions

DebounceTime := 90 ; ms between same-button triggers

ScrollAmount := 3 ; scroll steps per press

PollRate := 15 ; timer speed (lower = faster)

; =========================

; SCRIPT START

; =========================

SetTimer(CheckButtons, PollRate)

lastStateDown := false

lastStateUp := false

lastTriggerDown := 0

lastTriggerUp := 0

lastScrollTime := 0

lastScrollDirection := "" ; "up" or "down"

CheckButtons() {

global ControllerNumber, ButtonDown, ButtonUp

global lastStateDown, lastStateUp

global lastTriggerDown, lastTriggerUp

global lastScrollTime, lastScrollDirection

global ScrollLockTime, DebounceTime, ScrollAmount

now := A_TickCount

; Build key names dynamically

keyDown := ControllerNumber "Joy" ButtonDown

keyUp := ControllerNumber "Joy" ButtonUp

; Scroll Down

currentDown := GetKeyState(keyDown)

if (currentDown && !lastStateDown) {

canScroll := (now - lastTriggerDown > DebounceTime)

if (lastScrollDirection = "up")

canScroll := canScroll && (now - lastScrollTime > ScrollLockTime)

if (canScroll) {

lastTriggerDown := now

lastScrollTime := now

lastScrollDirection := "down"

Loop ScrollAmount

Click("WheelDown")

}

}

lastStateDown := currentDown

; Scroll Up

currentUp := GetKeyState(keyUp)

if (currentUp && !lastStateUp) {

canScroll := (now - lastTriggerUp > DebounceTime)

if (lastScrollDirection = "down")

canScroll := canScroll && (now - lastScrollTime > ScrollLockTime)

if (canScroll) {

lastTriggerUp := now

lastScrollTime := now

lastScrollDirection := "up"

Loop ScrollAmount

Click("WheelUp")

}

}

lastStateUp := currentUp

}

Step 5: save the file and double click the file to run the script.

Step 6: Use an application that you can scroll up and down on to test. If nothing is scrolling then you probably need to change the controller number in the script. You can make adjustments in the script configuration section to change how the wheel outputs. Debounce time and scroll lock time have the most effect.

Step 7: rebind whatever you’d like to use the trim wheel on in whatever sim you are using to mouse scroll up and mouse scroll down respectively.

Hopefully this helps if you’re encountering the same issues as me.

reddit.com
u/Aggressive_Prior7795 — 7 days ago