https://bill.harding.blog/2020/05/17/linux-touchpad-prelimin...
https://bill.harding.blog/2020/05/17/linux-touchpad-prelimin...
The closest I have seen is the Snowpad[1] but it's been discontinued by the maker and they pulled down the source as well.
I'd try duplicating it but it used the Microchip MTCH6301 and it's been marked `Not recommended for use in new designs.` I'm hunting for an easy to use alternative if anyone knows one. I may still take a stab at the MTCH6301 just because of how easy it looks to use.
Also: Can you recommend some reading material as an introduction to using a capacitive digitizer? I am planning to use one in an upcoming project (either one from a tablet glass replacement or a stand alone one) and really have no idea what to look out for yet in terms of communication with my Linux board (bonus: Something about DIYing one because I need a special format, but I guess that's especially hard because it's supposed to go on to a screen).
- Control over the size/shape of the sensor pad.
- Control over communication (i2c/spi/usb)
- Ability to explore gesture behaviors and expose simplified interfaces to the OS.
- Control over click feel/behaviors by customizing snap switch style, mount, and locations.
- Control over the touch surface finish. (Did you know you can laser cut glass screen protectors? Why are none of these touch pads glass outside of macbooks?)
- Open documentation on all of the above.
As for reading material I can't recommend anything as a summery (see my last bullet). Manufacture design guidelines are probably where you should start.
Case in point: MTCH6301: https://www.microchip.com/wwwproducts/en/MTCH6301 Microchip Sensor design guide: http://ww1.microchip.com/downloads/en/DeviceDoc/FAQs%20-%20S...
- Mechanics (a good surface, sensing)
- Robustly designed state machines to track states even before your finger lands.
- Math (to deal with finger acceleration, stabilization)
- Feedback! Mechanical clicking, piezo, weight actuation, etc. I cringe when I see projects lacking feedback.
As a teaser here's my messy breakdown of the macbook trackpad states, based on things done back around 2008/2009 (http://blog.sendapatch.se/2009/november/multitouch-on-unibod...):
enum RawTouchStateOneValues {
TOUCH_STARTED_STATE = 1, // initial touch started state - i.e. first frame of a touch. warning on this state: StateTwoValues seem invalid here
TOUCH_HOVERING_STATE = 2, // multi-frame: typically occurs when a touch is about to land.
TOUCH_LANDED_ON_PAD_STATE = 3, // usually single-frame, but can occur multiple times if a touch hovers and returns (from state 6,2,1) - you can also go here from state 6, which means a hanging touch can 'return'
TOUCH_ON_PAD_STATE = 4, // typical duration of a touch - moving around on pad
TOUCH_LEAVING_PAD_STATE = 5, // usually single-frame -
TOUCH_LEFT_NOW_HOVERING_STATE = 6, // multi-frame: occurs when a touch occurred but then left pad (state 5), and is now hovering
TOUCH_ENDED_STATE = 7 // single-frame: touch finally ends
};
enum RawTouchStateTwoValues {
TOUCH_DETECTED_ALTSTATE = 0, //state only seems to occur on initial touch (stateOne's TOUCH_STARTED_STATE), which I filter out
TOUCH_RESTING = 1,
TOUCH_NON_RESTING = 2,
TOUCH_NON_RESTING_AGAIN = 3,
TOUCH_THIRD_TOUCH = 4,
TOUCH_EDGE_REGION = 5, //only observed on magic trackpad - seems to occur when starting at the edge.
TOUCH_SIXTH_TOUCH = 6,
TOUCH_GROWING_FROM_EDGE = 7, //both cases 12 and 7 seem be used for palm-rejection scenarios
TOUCH_EIGHTH_TOUCH = 8,
TOUCH_NINTH_TOUCH = 9,
TOUCH_TENTH_TOUCH = 10,
TOUCH_ELEVENTH_TOUCH = 11,
TOUCH_COMING_FROM_EDGE = 12 //both cases 12 and 7 seem be used for palm-rejection scenarios
//other states observed but unknown - 4 (seems to consistently occur when I have three fingers down.
// likely occurs in certain pad regions)
//
};Luckily, for those using desktops who still want to use a trackpad, the Magic Trackpad works really well out of the box too. And there are not many other options in the market.
I used to prefer trackballs from Logitech, but current models are nowhere as smooth as those from the 1990s and early 2000s.
As a former Mac user, I can also recommend whatever is in the HP EliteBook I'm using now.