I switched to macOS after I was given a “broken” M2 MacBook Air. After a factory reset, the Mac worked like new, and I switched from my workhorse of a Thinkpad (which makes a cameo in
As a Windows user at heart, I miss my physical trackpad buttons when I need to use CAD in a pinch. ThreeButtons is meant to emulate the three physical buttons that you’d find on something like a Thinkpad in macOS. I prefer the “Tinkercad” control scheme in Fusion - middle mouse is Pan, and right click is Orbit. This program has allowed me to use Fusion effectively with just a trackpad for an unholy amount of designs. It’s also useful for general-purpose computing, such as using middle mouse click in a browser to open a link in a new tab.
Demo Images
The zone sliders also allow you to resize the click zones in real-time, and the changes are reflected in the colored preview rectangles.
The info below is taken from my github Readme, plus some extra info.
Features
✅ Menu Bar item
✅ Three distinct zones on the bottom of the trackpad for left, middle, and right click
✅ Dragging while clicking
✅ Preview area
✅ Launch at login
✅ Disable/enable click recognition outside of zone ('Strict Zones')
✅ Enable/disable certain zones (for example, to just have a large right-click zone)
✅ Resizable zones
✅ Proper preferences window
Known issues
Power usage spikes after opening preferences window
This is caused by the touchpad input handling being inherently tied to the “window” view after it’s created. You can’t stop the visualization in the settings page without crashing the program. I’m currently working on a total refactor that fixes this problem and cleans up the code overall.
Click grab/release issues
Fusion360/CAD bug where pan/orbit tools are choppy until all zones are clicked once.
Unclear exactly why this happens, but I believe it’s related to the issue below - it’s possible a click is being “held” in the background in error.
Touching a zone while you've clicked elsewhere (and then releasing that other click) may cause that key to get stuck
Should be fixable by ignoring clicks in zones if a click already exists elsewhere/making sure to release one type of click before starting another
Dragging from one zone into another and releasing does not release original click
This has to do with how clicks are handled. Is related to the issue above.
Fixing one of these issues will likely fix them all, and will be handled in the refactor mentioned above.
Planned Features
Enable/disable two-finger right click overriding zone presence (if you two-finger right-click in any zone, toggle it counting as a right-click or being overridden by the zones)
Program inclusion/exclusion list
Fix known issues
Installation
I would like to release a binary for this soon, but it doesn’t feel quite polished yet. In the meantime, development info is below.
Note: I do not have an apple developer account, so the package will be unsigned and you'll have to override the system warning in Preferences -> Privacy and Security
Building & Development
Clone the repo: git clone <https://github.com/skylatian/threebuttons.git> --recurse-submodules
Double click on OpenMultitouchSupportXCF at the top right, and go to Signing & Capabilities
Change Team to your default team
Change Signing Certificate to Sign to Run Locally
Either click the run button in the top left, or do cd theebuttons/OpenMultitouchSupport-main && sh build_framework.sh
if you ran the command, you should see the following (or something similar):
**** BUILD SUCCEEDED ****
xcframework successfully written out to: [some path]
Now, open the threebuttons.xcodeproj in xcode
Double click on threebuttons at the top right, and go to Signing & Capabilities
Change Team to your default team
Change Signing Certificate to Sign to Run Locally
Click build! This should run without issue. If not, I’m not sure what happened. Google around, or open an issue if you can’t quite figure it out and I’ll see what I can do.
An ultra-compact CoreXY 3D printer design with a 35% smaller footprint and 50% smaller overall volume than the Voron V0 with the same usable print size