Jun 25, 2025

Recent Proceedings (June 2025)

 

This is my latest prototype.

The 16 keypad placed at the left bottom is a double action pad for function keys + numpad. Left 12 keys have double action tactile switches, Alps Alpine SKRN series. Right 4 keys have normal tactile switches. SKRN is not very durable, so I placed heavy use keys (0, comma, period, and Enter) into normal tactile switches. Double action keys are function keys for shallow press, number keys (and volume keys) for deep press. Is this a good idea? After my experience of several days, I am a bit skeptical now. I don't want to ship any wrong idea as my consumer product, so I am testing my ideas by my prototypes.

At the righit neigbour of the 16 keypad, a slider is placed. It generates two-finger swipe of Windows Precision Touchpad Protocol (PTP), i.e. it offers smooth and inertial scroll. At first, I made a slider by Cypress' IC, but I found that the scan rate (50 Hz) and resolution (8-bit) are not enough to PTP. So in this prototype, I made the slider with STM32. It gives me 100 Hz scan rate and 12-bit resolution. But I feel that the lineality is not enough. And I wish that the slider can do two-finger pintch. There is work left to do.

In the first place, is built-in slider a good idea? Now I feel that the place is wrong. In the next prototype, I will place it into the left edge of the keyboard.

I think that the iteration of prototyping is coming to an end. I will fix the final specification of my product in this year.

Jun 24, 2025

keycap-designer Updated

What's new in v0.1.3:

  • The common use scenario has been changed to pip based.
  • `DeviceRGBColor` added.

keycap-designer is a Python-based open-source application to design keycap printing images. DecentKeyboards accepts the artifacts as complete printing-ready data.

keycap-designer is good for designing a keycap set. A keycap set should have a consistent design across its keycaps. keycap-designer helps a lot to make a consistent design.

So the learning curve may be too steep if you need just one or two keycaps. In that case, please send me the printing image file, without struggling keycap-designer.

Generated preview

Printed keycaps

Jun 19, 2025

P2PPCB Compoer F360 Updated (June 2025)

  • PCB snap design has been revised.
  • Full feature for macOS.
  • Decal RPA has been removed and replaced by API.
  • New feature in Assign Matrix command: You can find unassigned key easily by showing yellow X.
  • Bug fix: Now separated frames have correct body name.

I think that P2PPCB Composer F360 is now good enough to design good prototypes.

Release 20250619-v0.2.1


Feb 13, 2025

Recent proceedings (or regressings)

TL;DR: Azoteq has discontinued their touchpad modules, TPS43 and TPS65. There is no successor or alternative product. I have given up. I will pivot from touchpads to sliders like HHKB Studio, but not placed on case sides.


My current prototype. The keycaps are Junana MX.

What is PTP? Why are Azoteq touchpad modules so irreplaceable?

For the last 20 years, the UI of PC haven't made any advancement. In 2005, we already had mice, touchpads, trackballs, etc... But, wait, really no progress? I think that there was at least one important advancement: inertial scrolling on touchpads.

I am not familiar with Mac history. As far as I checked, MacBook Pro (2008) was the first MacBook with inertial scrolling. On Windows, 8.1 (2013) was the first. On Windows, inertial scrolling comes with "Precision Touchpad". "PTP (Precision Touchpad Protocol)" is often used as the feature name of touchpads. On Mac, there are no (major) third-party touchpads now, so the feature has virtually no name.

In the age of the dot-com bubble, "dog year" was a buzzword. Nostalgic. In 2024, I still saw non-PTP touchpads for Windows everywhere. On Windows, a decade was not enough to popularize PTP. Do only immortal elves like Frieren use Windows now? All dogs are using Mac now?

There are enough reasons of it. After Windows 8.1 (after Vista, actually), Microsoft has almost stopped to invest Windows make better. After 12 years from the first release, PTP feature is still sketchy. For example, it yet cannot change scrolling speed without RegEdit and reboot. Laptop or touchpad manufacturers felt uneasy with such flaws. Logitech implemented their own inertial scrolling (but it is not very smooth like PTP or Mac).

Unlike Logitech, I decided to use PTP for my products. I implemented PTP on QMK. It works well on my prototype (now I am typing this blog by it) for several months. I found some glitches of it in the several months. Today I am going to tell you a glitch lurking in Azoteq IC, IQS550 / IQS572 (and other ICs, probably).

Before going to the glitch, we should know what is Azoteq TPS43, especially why it is so irreplaceable.

First of all, in the market now, there are little touchpad modules. Cirque, Azoteq, and nothing. I don't know why. In Alibaba, there are many touchscreen modules, but no touchpad modules. Moreover, Cirque touchpad modules are not PTP-ready. Cirque makes PTP-ready ICs (Gen 6, Dell uses it), but Cirque touchpad modules don't have them. Azoteq touchpad modules, TPS43 and TPS65, are irreplaceable. They use Azoteq PTP-ready ICs, IQS572 and IQS550 respectively.

But in 2024, Azoteq have discontinued TPS43 and TPS65 without successors.

We can make our own PTP touchpad modules if we have a good PTP-ready IC, PCBA design skill, money, time, motivation, etc. Let's see PTP-ready ICs in the market. You can find just two relevant options: Microchip maXTouch (mXT144U) and Azoteq (IQS550 or IQS572). Where is Cirque Gen6? No sale on Mouser or such retailers. Synaptics also makes PTP-ready ICs (Microsoft uses it), but no sale on retailers too. This situation discourages me from making my own touchpad modules. In this situation, I am not confident enough that I can resolve the glitch. What is the glitch? Now we are ready to go on it.

Power-saving behavior? Does not seem to be the case.

Leave a touchpad alone for a few tens seconds, then suddenly swipe with two fingers. On MacBook, you will see what you expect: Inertial scrolling. On my prototype's Azoteq TPS43 (its IC is IQS572), the first swipe is ignored. Subsequent operations are recognized correctly. Only the first operation is ignored. Not a showstopper, but a noticeably bad experience. Decent touchpads never have this glitch.

The behavior looks like a side effect of power-saving. So I underestimated the glitch for several months. "Just find the power-saving configuration in IQS572 and kill it, that's all".

This was not the case.

I killed every power-saving features in the IQS572, but the glitch remains. I tested a cheap USB PTP touchpad, and I found the same glitch. Now I suspect that the behavior comes from "Auto Tuning Implementation (ATI)" feature of IQS572. The cheap USB PTP touchpad's IC should have similar feature and behave similarly, I guess.

A cheap USB PTP touchpad
A cheap USB PTP touchpad

Capacitive touchpad relies on capacitance sensing, and capacitance is susceptible to changes in circumstances such as room humidity or surface moisture. Touchpad ICs should adapt to such changes every second. At the same time, PTP-ready ICs analyze the sensing data to calculate the position(s) of the finger(s) and to identify / track the finger(s). Analysis and adaptation will be closely intertwined, I think. ATI will be a maze built on a huge amount of experience. ATI should fix almost any malfunctions, but the glitch might be too hard to find. (Apple found and fixed it, of course)

IQS572 datasheet describes the ATI configuration parameters, but I find them quite difficult to manage. To do so, I need a testing machine of touchpads, like an XY plotter. And the configuration should be able to adapt to changing circumstances. I cannot run tests under very many circumstances.

I guess that Cirque or Synaptics PTP-ready ICs may not have the glitch. Do Microsoft and Dell both overlook the glitch? That's unlikely. But Microchip maXTouch? I can test it, but, there is no other way? Isn't investing this way too risky?

The problem is too much for me. I have given up. No touchpad in my future products.

My dream touchpad

I invested a lot in my touchpad project.

Recent fancy laptops' touchpads have Linear Resonant Actuators (LRA). It generates a tactile feeling on the fingers when the user presses the touchpad. This is called haptic feedback. Such touchpads should detect the pressure of fingers, so a pressure sensor is also required.

Does such a feature look too much for a privately run shop like DecentKeyboards? Actually not so much.

LRA is a common component. See Digikey. Vybronics, PUI Audio, Vishay Dale, and JIE YI ELECTRONICS make them. About driver ICs, TI and Renesas make them.

LRA is a promising way, but I pursued piezo actuator. I found that cheap cheap piezo speaker elements in Aliexpress are able to generate a tactile feeling on the fingers via (not very large) touchpads. Piezo driver IC, TI DRV2667 makes possible to design a quite small driver PCBA. The advantages of piezo actuator are not only the cost and footprint. The response time is noticeably faster than LRA. The shortcoming is, the assembly work is cumbersome. This may be critical for mass production, but no problem for me. I built a piezo actuator driver PCBA and it works flawlessly.


Cheap cheap piezo elements


My prototype PCBA, piezo actuator driver and pressure sensing MCU


My testing bed for a stack of touchpad module, piezo elements, force sensing resistors

Pressure sensor is much more burdensome. For the cost, force sensing resistor (film type sensor) is the only option available to us. It is a wacky sensor. Its pressure-resistance curve is not linear, and has a strong hysteresis. I need a MCU (ATtiny 1606) just to sense the pressure of the fingers on the touchpad. Anyway, it works well.

We can make decent touchpads if the glitch does not block us. After discontinuing Azoteq TPS43 and TPS65, the glitch is critical.

The life goes on. Capacitive slider is the next destination.

Recently I was interested in a feature of HHKB Studio: Capacitive sliders placed on case sides.

Sadly they are not PTP for now, but it may be improved by firmware update someday. The sensitivity is not a decent thing ("when I did want to use the touch bars, I found them unresponsive and difficult to engage, often requiring three or four swipes to get them going." It sounds similar to the glitch), but it can be solved if the IC is not sophisticated like PTP-ready ICs, I guess. Sliders placed on case sides were bad idea, but how about top horizontal center? My next prototype will give me the answers.

I have been using my current prototype for several months, and I have found inertial scrolling and zooming features of the PTP touchpad to be indispensable. As a pointing device, touchpad is poor. Just for inertial scrolling and zooming, there is no need for a 2D touchpad. An 1D slider will do.

The downside of capacitive slider: I have to build my own slider module. It looks hard but able to get through, I guess now.

Jun 2, 2024

P2PPCB Compoer F360 Updated (June 2024)

  • Follows the breaking change of F360 in May 2024 release.
  • Now it shows a progress bar during some commands.

Apr 9, 2024

P2PPCB Composer F360 Updated

P2PPCB Composer F360 20240409 is now available.

  • Trackpad modules and Qwiic-to-FFC adapters for them now available. Use Insert Misc command.
  • Some bug fixes

Key decals of XDA and Choc V1 are still odd if your display scale is not 150%. I'd like to wait until Autodesk adds decal API. I think I cannot make it good for all scales without the API.