Skip to content

Repository files navigation

Mac Xeneon Edge Touch Driver

A from-scratch macOS user-space touch driver for the Corsair Xeneon Edge 14.5 inch 32:9 touchscreen panel so you can make it genuinely useful when using it with a Mac.

How To Install

To install for the current user, just run the following from the root of the checked out repository on the relevant mac:

./Scripts/install.sh

This builds the release binary, installs it under:

~/Library/Application Support/MacXeneonEdgeTouchDriver/bin/MacXeneonEdgeTouchDriver

and installs the LaunchAgent at:

~/Library/LaunchAgents/com.ajvwhite.MacXeneonEdgeTouchDriver.plist

No script uses sudo. Driver logs are written to:

~/Library/Logs/MacXeneonEdgeTouchDriver/driver.log

The LaunchAgent also creates stdout.log and stderr.log in the same directory for process-level output. The driver itself uses Unified Logging plus driver.log, so stdout and stderr are normally empty unless launchd or a lower-level runtime writes there.

The installer creates a default config file if one does not already exist:

~/Library/Application Support/MacXeneonEdgeTouchDriver/config.json

Uninstall:

./Scripts/uninstall.sh

Uninstall removes the LaunchAgent and Application Support files but keeps logs.

Build a signed release binary:

./Scripts/build-release.sh

By default this uses ad-hoc signing. Set CODESIGN_IDENTITY for Developer ID signing and NOTARIZATION_PROFILE to submit the release archive with xcrun notarytool.

Configuration

Optional config file:

~/Library/Application Support/MacXeneonEdgeTouchDriver/config.json

All fields are optional. Missing or malformed config falls back to defaults and logs a warning. logLevel only controls the minimum level written to driver.log; Unified Logging remains controlled by macOS logging configuration.

{
  "logLevel": "info",
  "timing": {
    "warpToClickDelayMs": 10,
    "downToUpDelayMs": 20,
    "clickToWarpBackDelayMs": 10,
    "tapDebounceMs": 50,
    "stuckGestureTimeoutMs": 2000
  },
  "display": {
    "vendorNumber": 3672,
    "modelNumber": 60672,
    "serialNumber": null,
    "expectedWidth": 2560,
    "expectedHeight": 720
  },
  "gesture": {
    "multiTouchEnabled": false
  },
  "diagnostics": {
    "fileLogPath": "/Users/ajvwhite/Library/Logs/MacXeneonEdgeTouchDriver/driver.log",
    "fileLogMaxBytes": 5242880
  }
}

gesture.multiTouchEnabled is always forced to false as the hardware only exposes single touch information, if this ever changes we will look to see how to support multi-touch gestures.

Known Caveats

  • If the physical mouse is moved during a touch gesture, the cursor will return to the position captured when the touch began.
  • Multi-contact gestures are not supported as the hardware doesn't report this information back.
  • If the process is killed with SIGKILL, normal shutdown cleanup cannot run. Relaunching the driver or moving the physical mouse after cursor association is restored may be needed.

Troubleshooting

  • If the driver exits immediately, check Accessibility permission for the exact binary location as provided by the install script.
  • If HID open fails, check Input Monitoring permission and confirm no other process has seized the same VID/PID device.
  • If taps land on the wrong display, run swift run DisplayInfo and adjust the optional display config override.
  • For HID investigation, use swift run HIDDump; it intentionally runs in non-seize mode and is separate from the production daemon.

About

A from-scratch macOS user-space touch driver for the Corsair Xeneon Edge 14.5 inch 32:9 touchscreen panel so you can make it genuinely useful when using it with a Mac

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages