Trackpoint - joric/jorne GitHub Wiki
The fundamental difference between trackpoints and joystics is that trackpoints are not physically moving, they react to pressure, that puts much less stress on your fingers. They need a solid base (tilted Corne is especially prone to caving in).
It's confirmed that Lenovo trackpoints work fine both at 5V and 3.3V (see ZMK article), so wireless builds are also possible.
New!
- Rfong wrote a blog post on dismantling R61 https://rfong.github.io/rflog/2021/10/18/r61-trackpoint-pt1/
- Crkbd trackpoint mounted between the keys https://github.com/joh/crkbd-trackpoint
Video
You only need 4 wires, so it can work as a drop-in module replacement for the OLED screen.
There are no mouse buttons/gestures on the Lenovo trackpoints (mouse button pins are INPUT pins to pass to the trackpoint PS/2 output), so just define left and right mouse buttons in your layout.
Trackpoints
I would really recommend R61/T60/T61 Trackpoint, it comes in 2 parts naturally.
- https://deskthority.net/wiki/TrackPoint_Hardware (Deskthority wiki)
- T400 deskthority thread: https://deskthority.net/viewtopic.php?f=7&t=7678
- X60 geekhack thread: https://geekhack.org/index.php?topic=8971
- QMK: https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/trackpoint
- QMK Trackpoint Tutorial: https://github.com/alonswartz/trackpoint
Where to buy
- X60/X61 keyboard ($9.50) https://www.aliexpress.com/item/4000195935613.html
- X100 keyboard ($9.80) https://www.aliexpress.com/item/4000195477827.html
- T40 keyboard ($17.99) https://www.aliexpress.com/item/32827348727.html * smaller size
- T60/T400 keyboard ($10.32) https://www.aliexpress.com/item/32839727211.html * got that one
- T60/T400 keyboard ($9.50) https://www.aliexpress.com/item/4000195293270.html
R61 Trackpoint
Note that R61 comes in 2 parts (T60 trackpoint is easier to get but it needs to be cut in half, this one is already split):
- See related GitHub project: https://github.com/manna-harbour/crkbd/tree/master/trackpoint
This trackpoint module can be found in thinkpad keyboard model number MW-89US, but only some parts numbers (including 39T7148 and 42T3241) and not others (including 39T0928), so check the parts number with the seller before purchase.
E.g. this one looks like the proper model, 42T3241 (note the 4 black fasteners on the trackpoint).
- https://www.aliexpress.com/item/32811098315.html (42T3241, $28.03)
You can try other ones with 4 fasteners, at your own risk, I haven't tried them:
- https://www.aliexpress.com/item/32918489415.html (42T3127, $14)
- https://www.aliexpress.com/item/33019028452.html (42T3241, $15)
R61 is used like this, Doesn't stick out when folded under the OLED protector piece.
back | front |
---|---|
- Album about R61: https://photos.app.goo.gl/6eYa4L8kt3tQWYUj7
T60/T400 Trackpoint
The 2.2 uF capacitor can be replaced with larger capacity (10 uF) if needed, it doesn't really matter. The 2.2 uF capacitor and 100K resistor circuit is for resetting the board on power on (you need fewer pins this way). It's 5V but 3.3V works too.
T40/R40 Trackpoint
You can buy T40/R40 trackpoint, it's smaller than T60/T400, but more expensive. The pinout is compatible.
Crkbd Trackpoint
Blackhawk
The guy uses labret cheek piercing to make a long stem/stick. He glues them to the regular trackpad base with the Loctite Super Glue-3.
- Relatively cheap.
- Super strong (surgical steel, titanium).
- Really thin in diameter (16G is perfect for between keycaps).
- They come in different lengths (8mm to 26mm).
- They have a flat bottom (great for gluing to TP).
- They have a screw on top ball, in different sizes.
I ordered a few sets of different lengths and different diameters (I wasn't sure if 16G would be strong enough - it is), as well as different ball sizes from ebay for relatively cheap.
My trackpoint pointer base sits flush under my 3mm switch plate, and with a cherry MX switch having a height 10.2mm above the switch plate, and about 1-2mm PBT cherry keycap on top, the 14mm stem with 3mm ball is kind of perfect.
For extra friction on the ball, I used some sandpaper.
Buzzard
There's another project that uses 2-part trackpoint from Thinkpad X240. It doesn't provide electronics, just mounting holes:
It provides two mounting options for the trackpoint module, the surrounding Choc switches supposed to be flipped vertically. Top 6 switches apparently lack hotswap option because there's no space.
Size comparison
T40 trackpoint is about 26x37mm, T400 trackpoint is 30x30 mm. T60 might be even better because it can be cut in half to the size of Pro Micro.
You may also try cutting T400 in half, there's no vital traces on the back side, it's the cheapest option (desolder the knob first):
Misc
There are also other modules you can buy in bulks. They don't look much smaller or cheaper or easier to get than thinkpad modules.
Exotic (e.g. Arabic) keyboards are usually cheaper.
Flexpoint module
Aka Yoda trackpoint module. Sells for $9-$10.
- https://drop.com/buy/tex-trackpoint-module
- https://www.alibaba.com/product-detail/FlexPoint-TM-3-Axis-PS-2_50005591643.html
SK8707
Module similar to TEX yoda, groupbuy was here:
Namando K9
Sells for $10 in small batches, $7 in bulks.
AS5013
The AS5013 Adapter Board allows an easy and fast evaluation of the AS5013 contactless miniature joystick. By moving the EasyPoint module on the front side of the board it is possible to check the functionality of the AS5013. To connect the AS5013 on the adapter board to a microcontroller the single row 2.54mm 8-pin header is used. The adapter board can be easily connected to an existing application.
- https://youtu.be/CYoGwlWlGyo The waterproof EasyPoint™ presented by austriamicrosystems
USB Trackpoints
Need USB interface, so basically unusable for DIY (need at least USB-hub, or USB-host that most controllers don't have). A couple of new ones (relatively cheap, unchecked):
Alternatives
Most of those blackberry trackballs and trackpads and PSP joysticks are not suitable as pointing devices, they either reqiure too much space or not precise enough.
- https://github.com/germ/gergo-trackball, https://youtu.be/Q4Fka2BuQ8c (Blackberry trackball)
- https://github.com/vlukash/corne-trackpad, https://youtu.be/eY_9cieYMEQ (Blackberry trackpad)
- https://hackaday.io/project/167075-thumbmouse/log/166999-of-trackballs-and-trackpads
- https://github.com/ploopyco/mouse (3d printed trackball, uses PMW3360DM-T2QU sensor)
Touchpads
Most laptop touchpad use the same PS/2 protocol as trackpoints. Arduino example:
There is also a lot of other non-ps2/DIY/custom touchpads.
Blackberry trackpad
Needs relatively complex adapter with exact 2.85V power source and other parts (level converter and trackpad connector):
Video by Volodymyr Lukashevych:
PS/2 Touchpads
You can try PS/2 touchpad, should work with the same hardware driver as all the PS/2 lenovo trackpoints:
MTCH6102-based
You can try making your own touchpad, even build it into the keyboard's pcb, see:
MPR121-based
You can also try MPR121 sensors from aliexpress organize them into a grid. they are special touchpads sensors but it would need software support for interpolation. I got 4 breakout boards $0.64 a pcs haven't tested yet. Those sensors have 12 active channels that you can use for 5x7 or 6x6 or 10x2 grid.
ProxSense TPS65
- Datasheet: https://www.azoteq.com/images/stories/pdf/proxsense_i2c_trackpad_datasheet.pdf
- Twitter: https://x.com/DRB_lab/status/1834955578604765415?t=VUzjEhkJhUM3LRYePaw1tA&s=19
Looks like it can be manufactured on JLCPCB but it doesn't seem open source just yet.
Azotek also makes controllers, such as TPS65 and IQS550
The IQS550 is a projected capacitive touch and proximity trackpad/touchscreen controller implementation on the IQS5XX platform.
Another example of TPS65:
Trackballs
Blackberry trackball
Miniature blackberry trackballs are the worst. They use complex kinematics and 4 hall sensors, but don't really support diagonal motion.
@Germ|gboards.ca: Yeah, the other thing is that due to how the rollers are set up, diagonal motion is a bad time. (Remember this thing was for navigating a grid.) (MechKeys discord)
Video by Germ @ gboards.ca:
PMW3360DM-T2QU
Keyball46
Injection molded Trackball by Yowkees (breakout PCB is closed source), needs special keyboard, uses PMW3360DM-T2QU $10 sensor they you can buy on Aliexpress, same as in Ploopy mouse (it's open specs and it's supported by QMK):
Ploopy mouse
Aka The Ploopy Trackball, released under GPLv3. It uses the same PMW3360DM-T2QU sensor.
There is also a thumb version of ploopy mouse:
- https://www.reddit.com/r/olkb/comments/q2i6lg/a_completely_opensource_3dprinted_thumb_trackball/
- https://github.com/ploopyco/thumb-trackball/wiki/Ploopy-Thumb-Trackball-Kit-Assembly
Ploopy also makes headphones. I laughed so hard at this. https://github.com/ploopyco/headphones/wiki/Part-2%3A-Drivers
Encoders
EVQWGD001
Panasonic barrel encoder, EVQWGD001, pretty popular lately, sells on Aliexpres:
Examples:
Wireless version
It's confirmed that trackpoints work with 3.3V. I'll post updates here:
Firmware changes
I only was able to run busywait mode, interrupt mode didn't work for some reason. There's an interrupt version here: https://github.com/okke-formsma/qmk_firmware/tree/master/keyboards/handwired/test but it uses pd2 and pd3 pins that are reserved for LEDs and TRRS connection on Corne and the matrix scan frequency is still only 100 (same as busywait).
Busywait version:
rules.mk:
PS2_MOUSE_ENABLE = yes
PS2_USE_BUSYWAIT = yes
config.h:
//#define SSD1306OLED // no display (in favor of trackpoint)
#ifdef PS2_USE_BUSYWAIT
# define PS2_CLOCK_PORT PORTD
# define PS2_CLOCK_PIN PIND
# define PS2_CLOCK_DDR DDRD
# define PS2_CLOCK_BIT 0
# define PS2_DATA_PORT PORTD
# define PS2_DATA_PIN PIND
# define PS2_DATA_DDR DDRD
# define PS2_DATA_BIT 1
#endif
#define PS2_MOUSE_INVERT_Y
#define PS2_MOUSE_SWAP_XY //needs patched ps2_mouse.c
ps2_mouse.c:
static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report) {
...
#ifdef PS2_MOUSE_SWAP_XY
uint8_t tmp = mouse_report->x;
mouse_report->x = mouse_report->y;
mouse_report->y = tmp;
#endif
}
ARM support
PS/2 only works on AVR's at the moment, see https://github.com/joric/jorne/issues/1
Just checked it ends with /protocol/ps2_mouse.c:19:19: fatal error: avr/io.h: No such file or directory. nRF52 is ARM, not AVR, needs patching tmk_core/ps2_mouse.c. there are also ps2_io_avr.c and ps2_io_mbed.c the latter isn't used anywhere in the build files. So yeah you'd need some time and elbow grease to port it to ARM. I'm not interested just yet.
- https://www.reddit.com/r/olkb/comments/bteu7b/ps2_mouse_with_teensy_and_echibios/
- https://github.com/qmk/qmk_firmware/issues/5218 (Proton C when using PS2_MOUSE_ENABLE)
- https://github.com/pelrun/qmk_firmware/tree/ps2-port (PS/2 ARM port, from issue 5218)
- https://github.com/qmk/qmk_firmware/pull/6490 (someone got the bulk of the work done)
- https://github.com/JohSchneider/yamsek.qmk_firmware/blob/33f99188f62d5aabea04dc9ddbf3188c1cf49d4d/docs/feature_ps2_mouse.md
Misc
See https://github.com/joric/jorne/issues/20
- Sprintek SK8707. In the wiki, the link leads to "once upon a time" subreddit. It's mostly dead, but it leads to a lovely discord channel where you can meet smart trackpoint enthusiasts who will be happy to help. That being said, it is worth mentioning the discord channel (not the subreddit) but ultimately everything you need to know about this particular module can be boiled down to two resources:
- Sprintek shop: https://www.sprintek.com/en/products/PointingStick.aspx
- Datasheet. For instance, this one: https://cscott.net/DS0046%20SK8707%20Pointing%20Stick%20Module%20Datasheet.pdf (blame on Sprintek not publishing it)
- USB Trackpoints can be easily sourced from Amazon, Walmart, AliExpress and more. The problem is that it's relatively new product on the market and the pinout is not well documented online, however it's no longer a mystery. I've mapped it myself (see here) and some people mentioned that this module has been documented in ZMK community (no proof). I hope I can contribute to the Trackpoint page on deskthority after I get my account approved but I can't predict when it will happen. In the meantime, I believe the readers of this repo's wiki can benefit from learning the pinout without having to do additional research.
References
- https://github.com/alonswartz/trackpoint lenovo trackpoint with labret cheek piercing as a stick
- https://deskthority.net/wiki/TrackPoint_Hardware
- https://martin-prochnow.de/projects/thinkpad_keyboard (Lenovo Thinkpad T420)
- https://vlukash.com/2019/01/15/trackpad-in-keycap-corne-crkbd-keyboard/ (trackpad)
- https://github.com/germ/gergo-trackball (gballin, blackberry trackball)
- https://yskoht.hatenablog.com/entry/2018/05/01/011027 (helix mod with analog joystick)
- https://hackaday.io/project/167075-thumbmouse/log/166999-of-trackballs-and-trackpad
- https://www.instructables.com/Make-a-ThinkPad-keyboard-USB-adapter-with-Arduino