Ergonomic QWERTY keyboard with Trackball

Similar projects worth following
Reduced key-set with per finger keys alignment for comfortable fast typing.
It has well-known QWERTY layout, familiar numeric keypad and standard arrow keys arrangement.
Palm-rests and overall geometry addressing the CTS.
Built-in pointing device.
Whole 105+ keyboard emulation including the numeric keypad and F-keys.
Game-pad mode.
Keyboard body and palm-rests have a lot of space for laptop grade hardware. This keyboard can be easily converted into a portable computer to be used with home TV, office monitors or wearable displays glasses.

The main ideas I formulated for myself:

  1. Key set is divided in two planes - for left and right hands.
  2. Planes are mounted at angle to address the tunnel syndrome.
  3. Keys are not inclined, they are pressed straight vertically.
  4. A Space key cut in two and moved to the position under thumbs.
  5. All keys are grouped by actuating fingers and moved to match the middle key with each finger relaxed position "asdf" "jkl;".
  6. Keys are aligned in groups to reduce finger movements. Key cups also tailored to this goal. Finger blocks are not parallel, they aligned in the direction of each finger movement.
  7. The number of keys is reduced to let finger remain in its basic position all the time.
  8. Each index finger has one additional 3-key group (as in common qwerty keyboards). These additional groups ("TGB" for left finger and "YHN" for right one) are slightly raised above all other keys.
  9. Trackball mounted in the palm-rest acts as mouse and mouse wheel. This eliminates the necessity of movement between keyboard and mouse.
  10. All removed keys are placed in additional plane, activated by holding the thumb keys.
  11. Left additional plane contains numeric keys. Right plane holds arrow and navigation keys. Thus there is no hand movement between text typing position and arrows.
  12. The group of "shift-ctrl-alt-gui" keys is also eliminated. Holding key "F" acts as shift for right part of the keyboard. And the key "J" do the same for left part.


PTC Creo Elements Direct session file containing the main keyboard body, It has holes for ADNS-9800 mouse sensor, Cherry-MX keys, Teensy 2.0 controller and wiring. This is all just a prototype.

se2 - 1002.53 kB - 01/16/2017 at 16:25



Keycaps profile and attachment

Graphics Interchange Format - 9.09 kB - 01/11/2017 at 18:03

Preview Download


These are key caps for all keys except raised (TYGHBN) and thumbs (space-enter). I am modelling using PTC Creo Elements Direct. It is powerful but its interface looks not so friendly to me. I'd be grateful if you suggest something else. Key caps designed to fit CherryMX switches. I printed them on FDM Rostock with no supports.

pk2 - 231.02 kB - 01/11/2017 at 17:54


View all 3 files

  • 3D-Printed parts postprocessing

    Andrey Kalmatskiy7 days ago 0 comments

    First I tried to refine PLA printed parts:

    • printed on slower speed
    • sanded
    • painted with XTC-3D coating.

    And the same keycap using ABS and acetone bath

    I tried many techniques, it turned out that the best one is the simplest one:

    • Take a food box.
    • Put the paper towel slightly wetened with acetone to the bottom of the box.
    • Put a piece of aluminium foil atop of towel in its center.
    • Put ABS parts on the foil.
    • Close the box with hermetically fit cover.
    • Wait 15 minutes.
    • Profit.

    Despite some curling, I chose ABS parts for their slick ivory look and feel:

    So now my keyboard looks like this:

  • How Keyboard Works

    Andrey Kalmatskiy02/13/2017 at 17:25 0 comments

    Keyboard part is almost ready, though mouse one still needs some work.

    Main Layout


    Numeric Layout

    Esc7&8*9(0)Print ScreenMLBMRBMMB?
    `~1!2@3#-_(hold)Mouse lock?????


    Num LockF7F8F9F10HomePg UpUpPg DnBSpace
    Caps LockF4F5F6F11EndLeftDownRight'"
    Scroll lockF1F2F3F12Pause(hold)InsDel[{]}\|



  • Firmware

    Andrey Kalmatskiy02/06/2017 at 16:05 0 comments



    • key matrix scan
    • USB HID connectivity
    • trackball sensor reports x-y-deltas
    • logic for shift-control-alt-win modifiers
    • thumbs shift to numeric an navigation mode.


    • mouse mode
    • wheel
    • repeat
    • num-lock mode
    • game mode

  • Key caps

    Andrey Kalmatskiy01/30/2017 at 17:42 2 comments

      Printed key caps (using keycaps.pk2):

      If a 3D printer does not support multiple materials, the final model can be painted by permanent markers. I found that the Sharpie felt-tip pens are durable and well-adhesive to PLA.

      The model texture is formed by parallel lines (at side surfaces) or cross-hatched pattern on top and bottom ones, and the ink flows in those micro cracks, thus spoiling the painted regions. So I performed a trick:

      1. Made a model as if it is two-material.
      2. Setup a slicer for two headed printer having zero offsets.
      3. Removed all Tn commands in resulting G-Code text file.

      Resulting model texture is having etched contours of inter-color borders, and the ink of different color don't intermix.

      Keys "TGBYHN" are raised by 2 millimeters:

      Thumb caps are too long and unsteady, so I'm going to redesign them.

      Here is the assembled keyboard from top (this time having full wiring):

      Now I've started coding the firmware. This code looks useable for mouse sensor Dwergmuis

  • Wires

    Andrey Kalmatskiy01/23/2017 at 16:22 0 comments

    Keyboard body has been printed as six pieces. I find out that the PLA plastic can be firmly glued by SCIGRIP 16 Acrylic Cement, maybe this helps someone.

    Cherry switches fit well. Unfortunately I broke one during installation. Guess which one.

    Mouse sensor fits well in its hole.

    Loose wire soldering looks worse than it is:

    It's time to mount caps and code the firmware.

  • Electronic parts and body

    Andrey Kalmatskiy01/16/2017 at 16:24 0 comments

    Since this is just a early prototype, I decided to work without any PCB.

    I decided to employ ADNS-9800 as a mouse sensor and Teensy 2.0 as the main controller board.

    Wiring is done with some old IDE cable (yeah soldering is not my talent ;-).

    ADNS-9800 switched to 5 V.

    Cherry MX keys (I've chosen Blue ones for its soft clicks) are mounted in the main body.

    Keys are wired in 3 rows by 12 keys in each row. This occupies more pins but reduces the ghosting problem: a finger cannot press multiple keys of one grid column.

    Thumb keys are wired to the middle row on their own columns.

View all 6 project logs

Enjoy this project?


Discussions wrote 02/21/2017 at 13:44 point

Hi Cool project but the file type you used to post your CAD can not be opened. Is there a way you could post them in a more accessible file type like step or stl?

  Are you sure? yes | no

Magepodcast wrote 02/06/2017 at 22:47 point

I would reccomend looking into the Ergodox. It's a similarly split hand keyboard, and i think that it could help you out with some design ideas.

  Are you sure? yes | no

rek wrote 02/04/2017 at 04:09 point

Why not incline the pushing direction of the keys ? more natural no ?

And my list of ideas :

Add additional quick keys horizontally that you push by moving hand forward ? F1-F12 + FN mapable

shift-ctrl-alt-gui removed ? quite useful, any other way to bring them back ? mini row for pinky ?

Add scroll wheel between FG and HJ, one vertical and one horizontal ?

Split the 2 parts, add wireless/battery and put laser under so moving the whole thing is like a mouse... add notch thumb and pinky so you can grab it to lift it quickly... a keymouse ? Induction pad instead of battery for lightness ?

CNC the base, support and keys, polish and cast silicon mold. Cast it with lightweight polymer. Cut pieces, glue and paint.

But hey, you made something nice, just keep improving it. Who said a KB can't evolve :)

  Are you sure? yes | no

Andrey Kalmatskiy wrote 02/23/2017 at 02:04 point

Thank you for feedback.

This keyboard is 14th version. Most of these ideas (like inclining, splitting parts, moving keyboard as mouse) I tried in previous keyboards. Some is waiting for new versions.
Shift-ctrl-alt-gui functions just moved to "ASDF JKL:" keys. So for example to type Ctrl+A, you just:
1. press 'K' which plays Ctrl
2. press and release 'A'
3. release 'K'
This is the same scenario as you do with separate Ctrl-button, except you don't need to move hand out of basic position.
Regarding CNC, polishing and casting - sorry, I'm not that handy :-)

  Are you sure? yes | no

Does this project spark your interest?

Become a member to follow this project and never miss any updates