Skip to content

jmding8/Pome76

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

Pome76

Pome76

Pome76 attempts to balance productivity, ergonomics, aesthetics, and cost. It is a Neo65 with a custom nice!nano based PCB, ZMK firmware, and an estimated battery life of 1 year. It is designed around an unusual keymap which pushes the home positions out to the edges of the board.

If you are interested in building one, I may have PCBs available. Gerber, BOM and position files are located here.

Keymap

Blue = left hand. Red = right hand. White = rarely used.

Keymap

Combos
  1. SD, XC, or KL = Shift
  2. DF = Numbers Layer (can be combined with SD, i.e. SDF = Shifted Numbers Layer)
  3. CV = F-Keys Layer (can be combined with XC, i.e. XCV = Shifted F-Keys Layer)
  4. RG = Tab
  5. FG = Esc
  6. JK = Quote
  7. ,. = Forward Slash
  8. NM = Caps Lock
  9. HU = Menu
Core concepts
  • Dividing roles allows access to weird key + modifier combinations (e.g. Ctrl + Shift + F5).
    • The left fingers control layer activation.
    • The right fingers control the layered keys.
    • The left thumb controls modifiers.
  • The two hands are pushed as far towards the left and right edges of the keyboard as possible to mimic a split keyboard. The keys in between are rarely used.
  • Using combos with tight timeouts (35ms) to control layers (and Shift) makes it possible to put them on the home row with basically zero accidental activations, even when rolling keys while typing quickly.
  • Putting combos on keys that are typically controlled by one finger (i.e. RG), or keys that are very infrequently typed in sequence (i.e. ,.) permits the use of a very loose timeouts (200ms).
Other keymap details

There are many implementation details that contribute to a polished user experience. If you are interested to learn more, please reach out. For example:

  • Aggressively using positional hold-tap in combination with tap-unless-interrupted really helps prevent accidental home-row modifier activation.
  • The SD Shift and DF Numbers Layer combos are not actually implemented using ZMK's combo feature. They are implemented using layer-tap and macro functionality, which allows them to be combined. For example, SD = Shift, DF = Numbers Layer, and when used together SDF = Shifted Numbers Layer.

Why these design choices?

TLDR: For me, columnar-stagger and low-profile are not worth the drawbacks. And unibody lets me reuse the Neo65 case while still having a 95mm gap between hands.

Why row stagger?

I used columnar-staggered and sculpted key-well boards (Kyria and Advantage) pretty extensively in the past but found that they made it really hard to go back to a regular keyboard. Since I have to do this pretty often (especially while traveling), this is a pretty big drawback for me.

I also just never experienced a significant improvement in comfort or productivity from these new layouts. Although theoretically they should be better, it just didn't seem to translate into real world benefits for me. At the end of the day, I personally couldn't justify abandoning row-stagger.

For me, moving the Shifts to the home row (S+D and K+L combos) and the modifiers to the thumb cluster basically eliminated ulnar deviation, which seemed to clear up any (admittedly minor) pain I did have.

Why MX instead of low-profile?

My previous daily driver for the last couple years has been the Mercury (low-profile, 42 key, split) which is designed to be as low as practically possible. However it still isn't low enough and I still have to use a wrist rest.

Also, low-profile "Choc" switches are relatively quiet and also sound pretty bad overall. I think this subconsciously encourages me to type with more force: maybe I rely on the auditory feedback? In any case this can get tiring and frustrating. Since the MX ecosystem is so much more developed overall, it is a much better platform for sound tuning.

Finally, it is a LOT of fun to play around with different switches and keycaps, and there are way more options within the MX ecosystem.

Why unibody instead of split? It's just a lot easier to get a premium feeling result by modifying an existing keyboard, than it is to design and manufacture a premium custom split. Plus, by getting creative with the keymap, I can still put a 5u / 95mm effective gap between my hands (see the position of the F and J keys). Unibody also basically doubles battery life.

Build Notes

Guts

Flush mounting the nice!nano

The nice!nano sits below the PCB, which means it must be soldered so that the pins to not poke through the PCB and hit the keyswitches above:

Flush PCB top surface

I used Kapton tape on top of the PCB to keep solder from poking through to the top of the PCB:

Kaptop tape mask

I put together the microcontroller assembly dry. Everything held itself in place just rigidly enough that I could tack the header pins down with solder, even without pushing the pins all the way through the PCB:

Dry-assembled microcontroller

Once the header pins were soldered down, I pulled off the black plastic revealing the bare metal pins. This makes it much easier to remove the microcontroller by simply snipping the bare pins, if later needed for repair or debugging reasons:

Stripped header pins

Finally, I soldered the nice!nano in place and snipped off the excess pin length.

Soldered microcontroller

Modifying the case

Using a hand drill, a 3mm bit, and a hand file, I cut out a portion of the Neo65 case:

Case cutout

When assembled, the nice!nano fits into this cutout nicely:

Microcontroller in case

USB daughter board

I replaced the Neo65's stock daughter board with a female USB-C breakout board (the red PCB, from Aliexpress), held in place with a 3d printed bracket and the original screws:

Female breakout board

The breakout board has capacitors connecting the CC1 and CC2 pins to GND. Without these capacitors, the keyboard doesn't work when connected via a USB-C to USB-C cable. Since these capacitors are on the top side of the breakout board PCB, I had to drill two divots to accommodate them. To prevent an accidental short against the raw aluminum, I taped the bottom of the breakout board with Kapton tape:

Capacitor clearance

The female breakout board is soldered to a simple pass-through cable, which is just made up of four wires soldered pin-for-pin between the female breakout board's VCC, GND, Data+ and Data- pads, and their counterparts on a male USB-C breakout board (from Aliexpress):

Passthrough cable

Finally, the male breakout board plugged in to the nice!nano:

Passthrough plugged in

Battery

The battery is a generic 3040102 (3mm x 40mm x 102mm, from Aliexpress) that fits very well into the battery cutout. The cutout is 4mm thick, and it is important that the battery is thinner than this to avoid a Note7-style fire. The battery is held in place with some more Kapton tape.

Battery assembly

The battery's wires are soldered to the corresponding pads on the PCB.

Battery solder pads

Gaskets

The Neo65's PCB is held in place by rubber "gaskets". I trimmed the ones that were blocking the keyswitches.

Modified gaskets

About

Ergo-inspired (former 65%) keyboard

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published