Wednesday, October 23, 2024

How to change keyboard layout using visual online editors VIA and REMAP

 

VIA and REMAP are great online visual tools to re-define QMK-based keyboards. All current ThumbsUp! keyboard support both tools by default.

 

Configuration File

Download JSON file for your board from here: https://www.dropbox.com/scl/fo/2s8vz5tq5lffmpjuqbz2c/h?rlkey=71amow1mhhwfe54c0ywx59bfc&dl=0

 

v2 Atmega: rev2_atmega_via.json

v2 RP2040: rev2_rp2040_via.json

v3, v4: rev3_rp2040_via.json

v5, v8: rev5_promicro_unibody_5x12_via.json

v6: rev6_rp2040_5x6_via.json

v7: rev7_rp2040_5x6_via.json

 

 

How to use VIA

 

In web-browser navigate to https://usevia.app/:

 




Click on Settings icon:

 



 

 

 

 

 

Click on "Show Design Tab" toggle, so it is moved to the right:


"Design" icon should be visible on top of the screen:


 

 

 

Click on it, this screen should appear:

 

 


Move "Use v2 definition" toggle to OFF (left) position.

Click on the "Load" button and select the JSON file downloaded before.

 

A pop-up window may appear, select your keyboard and click Connect:

 


 

Click on Configure icon:

 


 

 

 

 

 

Modify your keys, they changes should become effective immediately:


 

 

How to use REMAP

In your browser navigate to https://remap-keys.app/configure.

 


 

Let the site to modify your keyboard, click on "+KEYBOARD" and connect your board:

 


 

If the site asks for the keyboard definition file, click on "IMPORT (.JSON)" and specify the configuration file downloaded earlier:

 


Modify the layout:

 


Once the layout is ready - flash it by clicking on "Flash" button in the top right corner:

 


 

 

 

 

Please note these steps are a temporary solution. Once I register my boards with VIA and REMAP there will be no need to upload JSON file.

 

ThumbsUp! Design History

In this post I will quickly go through the major design milestones which lead to the current ThumbsUp! keyboard design.

 

For years I used ThinkPad laptops and external ThinkPad Travel keyboards like the one below. I even used them together, i.e. as a split keyboard. The laptop was on the right and the external keyboard on the left, with a display between then. So my left hand used the left side of the external board, and the  right one - the right side of the laptop. A bit excessive, but otherwise quite comfortable, especially with the original version of Travel keyboard, with its trackpad and trackpoint, so either hand could use the mouse navigation.

 




 


 

There were some issues with the cursor control, and I rather refer to my article on All Things Ergo for details. So I started to look for other options.

 

There was some generic mechanical 60% keyboard, a Mistel Barocco, a Ergodox EZ, and an Ergodox Infinity (the group buy arrived somewhere in between of other boards, so it does not really count.) None fit the bill completely, yet they opened this rabbit hole for me.

 

Then I learned about Plank keyboard with its programmability. Unfortunately it was not readily available, so I started with a 3D-printed split version of it with a great help from the Internet:


The cable was not detachable, but otherwise it was quite comfortable. I learned how to use QMK for custom layouts.

 

Let's Split with Tsukaworks' 3D-printed case was even better, the cable connecting the halves could be replaced, so it was much better:



 

Then I learned about Dactyl-Manuform, and got a 3D printer to build one (as the local library did not allow the time required to make them):


I played with the layout, changed the column and row offsets and angles, at least a half of a dozen of them. The blue one in the picture above served me for quite some time as the primary work tool.

Despite all that I had not mastered Closure enough to make real changes to DM, so instead I started with Fusion 360 and simpler boards. Here is the Crocodox, its very first make:


The main key area was ok. The thumb cluster was too far away, so it caused some strain when I used Lower+Backspace (see my current layout diagram) for Del key.

In the next iteration I changed the thumb cluster angle. A bit better, but still too far. So the innermost keys on the cluster were out of comfortable reach.

 


I even added a carrying case that also served as a tilt platform, I am quite proud of that idea:


The next iteration brought the thumb cluster much closer. Also I discovered the innermost column caused some noticeable strain in my palms, in the area of the index finger base. I found that moving that column up reduced if not completely eliminated that strain:


 

By that time I got deeper into the Dactyl-Manuform's source code. I started experimenting with the board tilting and tenting. Below are a few examples:


These round key caps are wonderful! I used them for almost all of my MX-based boards:


I even considered it to be my endgame, that did not live long though:


I started playing with the DM source code, removed two of the thumb cluster keys, they were not really used anyway:


 

In between of DM designs I made a steno board, trying to replicate the keys of a mechanical Stenograph machine. The thumb keys were placed lower than the main block, exactly as in Stenograph. While it was interested, I learned that lowered thumb keys were extremely uncomfortable to use, so I never use such a layout anymore.


I polished my DM version further, removed two more thumb keys, and lifted and rotated the remaining two. It was much closer to the ideal layout:


I tried to replace this layout on a flat surface. It turned out to be pretty neat, slim and handy. The only complaint was the hands were pronated a bit more than with DMs, but it was a good start:


One final improvement for my DM, the pinkie columns were moved up (farther away), it was a step in the right direction. From top the rows looked more like W than a smooth arc in the original DM.


So those two boards had been used for quite a while, until I noticed a discomfort that turned into pain in the index finger joints. The sharp tenting angle the innermost columns pushed the index fingers sideways as if trying to bend them in an unnatural direction.

The rest of the orange board was good, so I tried to put all the keys on horizontal plane keeping the layout close if not the same as in that orange DM:


It was surprisingly comfortable. A minor issue with the key caps catching the bag lining was resolved by adding the borders (looking like crenelated battlements) around them:


 

Printing it with fuzzy skin produced even better results, so it became my daily driver for some time:


I kept playing with an idea of flattening the board to be used with a laptop. The keys layout was the same:


Then there were variations with a primary goal to simplify the build:


I tried other switch types, like this one Fish Ladder that accepted both Kailh Choc and MX-compatibles:


While using those boards with the laptops (mounted on a platform over the laptop keyboard) I found that most of the time the boards were in approximate the same position, so I decided to make a unibody version, saving the MCUs and eliminating the cable. The first version got something about 30 degrees between the halves, that was a bit too close:


So I doubled the angle to 60 degrees, and that was too much:


Angle was reduced to 44 degrees and that hit the sweet spot. Also I raised the thumb keys a bit, and that was another improvement, even with such a modest lift:


And from here I realized it would be possible to replicate this design with PCBs.

It took a few iteration with the board design (due to screwed up wiring) I got a board that worked with MX, ALPS and Kailh Choc switches:

 



It worked, but still got some mistakes in the wiring (e.g. the reset button turned out on a wrong side in one of the halves), but otherwise that lead the way for the next version.


I wanted to lift the index finger keys one level up, and the thumb cluster one more level up. That would make three PCBs, so I figured a unibody keyboard would be cheaper to produce. Also I got a batch of the TTC KS32 switches by mistake (confused them with Kailh Choc switches, I learned other people made the same mistake, so no shame in it,) so I made the board that would use MX, ALPS, Kailh Choc and TTC switches. No hot-swaps though. They worked really well.

Here are they in the background with the predecessors in front:

 


I use the board with spring-swapped Matias switches since February 2022, added a touchpad to it.

That board gave me some ideas how to improve the raiser/connector layout, and I realized that the middle and the ring fingers keys in the bottom row had to be relocated to the second level. Due to the shortage of MCUs I designed three versions to cover all available options (ProMicro in a socket, Atmega32U4 soldered on the board by me, and RP2040 assembled at the factory.) Again, surprisingly all three of then worked pretty well, including a wireless build with nice!nano instead of ProMicro. Results are being sold on this site.

 

You may find more details, including the STL files and Fusion 360 links at Thingiverse.

 

... That was the history up mid-2022, when I started making different versions of ThumbsUp! keyboard, v2, v3, and so on.

To be continued.

Monday, April 1, 2024

How to make a ThumbsUp! keyboard wireless

ThumbsUp! keyboards can be made wireless. 

Not all of them, but those driven by ProMicro controller.
There are multiple options, so far I only used one of them, the nice!nano v2 with ZMK-based firmware.

Nice!nano is a drop-in replacement for AtMega32U4-based ProMicro units.
It got a compatible pinout and is quite simple to use.

Here is how it looks fully assembled:


These are the parts: nice!nano v2 in the middle, the battery on the left and the pin headers on the right. Also there is a power switch on the PCB - it physically disconnects the battery from MCU/USB.


I use pin headers/sockets to allow MCU swap. The default/standard sockets are too tall, so I have to pull the pins from headers and cut them so they are flush with the board surface. Make sure solder balls are small enough to allow the raisers/connectors to actually connect.
Notice the MCU goes components towards PCB.



Make sure the B+ and B- holes are not used, they are added in nice!nano, but the ProMicro does not have them. There are other pins that connect MCU to battery.



The battery is hidden under MCU. Battery terminals are soldered to the board. There is a power switch visible in other pictures that disconnects the battery from the circuit.


There is plenty of space under MCU, the battery has to be affixed by a double-sided tape, or by a roll of scotch tape - with the sticky side out from both sides. Here it is like it looks like, the battery is suspended between MCU and PCB with two cylinders of scotch tape:



ZMK firmware for nice!nano is provided in the same dropbox folder with other files. Look for thumbsupv9-nice_nano_v2-zmk_20240401215300.uf2

By default firmware supports up to 4 bluetooth profiles, i.e. the board can be switched between 4 devices. Luckily there is a ZMK fork with mouse key support, that is the board can be used to move the mouse pointer and use the mouse buttons in the same way they are used in the QMK-based ThumbsUp! keyboards. Unfortunately there is no Cirque ProGlide touchpad support yet.


UPDATE 20240627: Some of the boards (i.e. all the newer versions v5, v8, v8b, v9) need a power switch installed, it is in the bottom right corner in the picture below.
That switch disconnects the battery from nice!nano. You can order it from Mouser: https://www.mouser.ca/ProductDetail/655-1825232-1

Note that the battery will charge only when the switch is the ON position, towards the center of the board.



Wednesday, February 14, 2024

I want to try your layout before I buy it...

 

You can actually try it on your Windows computer. May be that's all you need, and that's ok.

 

My layout is based on two things:

- tri-state layers used in Planck/OLKB boards,

- and SpaceFN layout.

 

The former allows to have four layers controlled by two keys. It works only if you have a programmable keyboard.

 

The SpaceFN layout can be used on its own, on any regular computer, provided you can install a program to it.

 

The idea is to turn space bar into a modifier key. That is when you hit it once it works as a space bar. But when you press and hold it - it activates another layer, like Shift or Control. This post on Geekhack.org describes this idea in more details.

 

For SpaceFN (when I don't have my ThumbsUp! keyboard) I use TouchCursor utility.

You can download and use it for free.

 

To use my layout - launch TouchCursor double click on its icon in the clock area to open the configuration window. Change any of the key bindings and close the window with OK button.





Then exit from TouchCursor by right-clicking on its icon, and choose Exit.

Download this file:


https://www.dropbox.com/scl/fi/9palixumrhksvrk0iyz8a/settings.cfg?rlkey=2llydt44s7t11r4x3fi17u2fe&dl=0


From that archive unzip and save "settings.cfg" into this folder, replacing the existing file, if any: "C:\Users\{YourUserNameHERE}\AppData\Roaming\TouchCursor"

 

Launch TouchCursor again.

 

When TouchCursor is running and is active, holding the space bar gives me this layer (the key action is in the center of each key):




This layout is especially good with the laptops, in which the navigation and editing keys are placed in very uncomfortable and often unusual spots, and the F-keys are either grouped differently or shifted to the side a bit, contradicting my muscle memory, or require holding FN key to use.

 

SpaceFN removes the need in those separate keys, and makes me feel better with any laptop keyboard.


How to change keyboard layout using visual online editors VIA and REMAP

  VIA and REMAP are great online visual tools to re-define QMK-based keyboards. All current ThumbsUp! keyboard support both tools by defaul...