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!

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.

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.

Trackpoints

I would really recommend R61/T60/T61 Trackpoint, it comes in 2 parts naturally.

Where to buy

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):

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).

You can try other ones with 4 fasteners, at your own risk, I haven't tried them:

R61 is used like this, Doesn't stick out when folded under the OLED protector piece.

back front

T60/T400 Trackpoint

t60

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.

t40

Crkbd Trackpoint

case-trackpoint-finished

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.

stem

labret

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.

buzzard-pcb

buzzard-build

buzzard-done

Size comparison

t60 vs t40

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.

arab

latin

Flexpoint module

Aka Yoda trackpoint module. Sells for $9-$10.

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.

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):

usb-trackpoint

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

GXcRuo1bwAQ7xUN

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:

01m4t8ar1ada1

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):

image

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:

ploopy-thumb

Ploopy also makes headphones. I laughed so hard at this. https://github.com/ploopyco/headphones/wiki/Part-2%3A-Drivers

photo_2024-06-14_22-23-56

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.

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:
  • 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