Skip to content

Latest commit

 

History

History
356 lines (228 loc) · 15.1 KB

File metadata and controls

356 lines (228 loc) · 15.1 KB

Kaladrius Steno Keyboard

Kaladrius

The Kaladrius is an orthographic steno keyboard that uses a modified Jackdaw steno theory created by Jennifer Brien. Dictionaries are stored in the firmware and Plover is not needed. The main goal for me is to be able to code with a chorded keyboard. It's still a prototype and hope to use it daily this year (2020) at work. It's a handwired and printable keyboard and use a Teensy 3.2

Why this keyboard ?

I'm a C++ programmer and I always wanted to improve my typing speed. I changed several times my keyboard layout in my career : My original layout was Azerty (with a top speed at 86 wpm on 10fastfingers), in 2014 I changed to Dvorak (with a top speed at 98 wpm) and in 2016 I finally changed to Colemak (top speed at 103 wpm).

I discovered Plover and Steno in 2016 too and was blown away by this presentation

I decided to learn Plover but found that it might not suitable for C++ because of the phonetic/mnemonic approach. That's why I got interested in Orthographic Steno Systems and found the "Jackdaw steno theory" on the Learn Plover site

I first implemented an ErgoDox Layout for Jackdaw and learned to type basics words on 10fastfingers.com. After a lot of iterations on the firmware I started to practice more but on April 2018 I injured my left hand after a too long training session. Actually I got a De Quervain tendinitis because of the very bad ErgoDox thumb positions. Note: at this time my top speed on the 200 words test was 140 wpm with Jackdaw.

I had a surgery in October 2018... Surgery (just after the surgery)

Scar (I won a scar)

So I highly don't recommend the ErgoDox or similar keyboards for Jackdaw. I'll delete the ErgoDox firmware soon!

After the surgery I decided to build a specific keyboard for Jackdaw so I can practice safely. The keyboard needs the following :

  • Thumbs keys must be closer to the index column to avoid bad wrists movements
  • Thumbs layout must be optimized for Jackdaw
  • Because of the 2 previous points the keyboard must be 3D Printed and the design must be parametric (that's why I chose OpenSCAD for the conception)
  • It's possible to switch to a "normal" keyboard layout
  • The keyboard is easy to build even if it takes time. That's why it's not really a splitted keyboard
  • The development board must have enough memory for several dictionaries (that's why I chose the Teensy 3.2)

I named it "Kaladrius" because the Keyboard looks like a white bird and in Roman mythology the Caladrius is a white bird that can heal someone...

Before continuing...

If you are interested by using Jackdaw and the Kaladrius here are some things to know before continuing :

  • First it's an orthographic system, it's slower than steno (but faster than touch typing)
  • It appears that by learning Jackdaw you won't loose your touch typing speed
  • It's only for the english language
  • I made some modifications to the Jackdaw theory and added/removed some features. I'll list them later
  • I may add/remove features, change dictionaries and/or change the fingers layout and the keyboard design to improve the keyboard.
  • If I change the dictionary or the design you may need to relearn some things (maybe a lots of things for major dictionary changes)
  • The build of the keyboard takes time
  • The keyboard is designed by default for MBK Choc Keycaps and Kailh Low Profile Choc Switches
  • To learn to type with this keyboard there is an application called KaladriusTrainer

KaladriusTrainer

How to build this keyboard ?

To build the Kaladrius you have to :

  • 3D print 6 different parts. If you don't have a 3D printer you can print them via an online 3D print service (like https://www.3dhubs.com for example) but it's very expensive.
  • Do the electronic by yourself...

Parts

You'll need :

Tools :

  • Soldering iron
  • Solder wire
  • Electronic tweezers
  • Electronic third hand
  • 1 Hot Glue gun + Glue Sticks
  • 1 mini electric screw driver (very useful for this build)
  • A marker
  • A ruler

3D Printed parts

You can find the stl files to print here.

There are 4 files but you'll need to print 6 objects :

  1. Left Case : use the file LeftCase.stl
  2. Right Case : use the file LeftCase.stl but in your slicer mirror the object along the X-Axis
  3. Link Case : use the file Link.stl
  4. Link Plate : use the file LinkPlate.stl
  5. Left Plate : use the file RightPlate.stl but in your slicer mirror the object along the X-Axis. Print this object with 2 perimeters
  6. Right Plate : use the file RightPlate.stl Print this object with 2 perimeters

For all files an infill of 20% is enough. About perimeters, except for 5) and 6), print all objects with 3 perimeters. For the right and left plates I personally print them on a glass surface.

About print times, it depends on your printer and print settings. For my settings I have the following :

  • Left Plate : 2h59
  • Right Plate : 2h59
  • Left Case : 7h01
  • Right Case : 7h01
  • Link : 7h25
  • Link Plate : 58 minutes

After this step you can assemble the case without the plates :

You need :

  • 8 M3 screws of 10 mm (8 and 12mm also works)
  • 8 M3 nuts
  • (optional) 1 M3 ring

Try to put a M3 nut in this slot on the case :

Nut in the slot

If you can't push the nut by hand use a M3 screw with a ring and use it to insert the nut :

Screw with ring

Screw until the nut is fully inserted Insert with screw

Once the nut is fully inserted remove the screw, at the end you should have something like this :

Nuts inserted

All nuts inserted

Teensy 3.2 soldering

Put the Teensy on the 4cm x 6cm pcb like the image below : Teensy

Here the left side of the Teensy is on the 4th column of the pcb

Solder the Teensy and cut the legs :

Cut the legs

Here is the schematic of a RGB Led (Common Cathod) :

RGB

Put the led on the 7th column like this :

RGB on pcb

Another view :

RGB lateral view

Now insert the cathod in the 4th column of the pcb like this :

Cathod

and push the led down until the top of the led is <= 13mm. If the led is too high you won't be able to put the Link Plate on the Link part :

RGB height

Solder the RGB led on the pcb, after that it's time to put the 220 Ohm resistors like this :

RGB led soldered to Teensy

  • 1 resistor is soldered between the Pin 13 of the Teensy and the red leg of the led
  • 1 resistor is soldered between the Pin 14 of the Teensy and the green leg of the led
  • 1 resistor is soldered between the Pin 15 of the Teensy and the blue leg of the led

As a memo here is the Teensy 3.2 pinout :

Teensy 3.2 pinout

Now link the Teensy GND pin and the Led cathod with a wire like this :

GND to Led

Now you can do a basic test :

  • Compile and flash the Kaladrius firmware on the Teensy
  • After the reboot you should see the RGB led blinking like in this video : Kaladrius boot blinking test

Switches

Puth the switches on the plate :

Switches on left plate

To be sure that they won't pop out glue them with a Hot Glue Gun :

Hot glue gun

As you can see on the photo you can glue just one side, it's enough. If you have to remove the switches from the plate you can use a Heat Gun

Soldering the columns

Here we'll work with the Left Plate.

Put the wire like this:

Column

Put marks on the wire:

Marks

Strip the wire:

Cut

The final result after soldering:

Final result

Soldering the rows (diodes)

Put diodes on the row like this (pay attention to the black line of the diode):

Row

Solder them like this:

Soldered Row

The final result:

Final result

Thumb

Do the same with the Right Plate

Connect columns and rows to the Teensy

Now that the columns and rows are done we can connect them to the Teensy. Here is a recap of columns/rows of the keyboard with the colors I used :

Keyboard Matrix

Same for the Teensy :

Teensy matrix

Use wires with the following lengths and solder them on the Teensy first At the moment don't solder wires on the plate:

  • Col 0 and 15 (red) : 25 cm
  • Col 1 and 14 (red) : 23 cm
  • Col 2 and 13 (red) : 21 cm
  • Col 3 and 12 (yellow) : 20 cm
  • Col 4 and 11 (yellow) : 19 cm
  • Col 5 and 10 (yellow) : 18 cm
  • Col 6 and 9 (white) : 17 cm
  • Col 7 and 8 (white) : 30 cm
  • Row 0 (green) : 20 cm
  • Row 1 (blue) : 22 cm
  • Row 2 (black) : 24 cm
  • Row 3 (red) : 26 cm
  • Row 4 (yellow) : 28 cm

Connect and solder the wires to the Teensy :

Wires on Teensy

And here is a closer look of the back of the Teensy, I added some hot glue for the row wires that go to the right side :

Back of the Teensy

When it's done put the Teensy in the case and pass the wires to the left and right sides.

Now you can solder wires to columns and rows on the plate :

First column wiring

All columns wired

Columns and Rows wired

You should have something like this :

Final result

Final assembly

You can put all plates on the case, you'll need :

  • 18 M3 of 12mm screws for left and right plates
  • 18 M3 nuts

Final assembly

Firmware

In your keymap.c file, create a layer for the Jackdaw layout, for example :

    [LAYER_JACKDAW] = LAYOUT(
        KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,     KC_F6,     KC_LGUI,      KC_TRNS,   KC_F7,     KC_F8,     KC_F9,     KC_F10,    KC_F11,    KC_F12, 
        KC_NO,     CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO,    CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, 
        CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO,    CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, 
        CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO,                          CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO, 
        CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO,                                                                      CKC_STENO, CKC_STENO, CKC_STENO, CKC_STENO,
                                                               CKC_STENO,                          CKC_STENO, 
                                         CKC_STENO, CKC_STENO, CKC_STENO,                          CKC_STENO, CKC_STENO, CKC_STENO, 
                                                               CKC_STENO,                          CKC_STENO ),

and add also this:

// Steno keymap
const uint32_t PROGMEM g_steno_layout[MATRIX_ROWS][MATRIX_COLS] = LAYOUT(
        0,  0,   0,   0,   0,   0,  0,             0,      0,   0,   0,   0,   0,    0, 
        0,  0,  L3,  L2,  L1,  L0,  S_ENT,         SC_SEP, R0,  R1,  R2,  R3,  R4,   0,
        0,  L4, L_A, L_C, L_W, L_N, SC_STAR,       SC_SEP, R_R, R_L, R_C, R_T, RP_E, 0,
        0,  L5, L_S, L_T, L_H, L_R,                        R_N, R_G, R_H, R_S, RP_Y, 0,
        0,   0,   0, 0,                                              0,     0,    0, 0,
                                   SC_STAR,        SC_SEP, 
                        SC_LPLUS, T_E, T_O,        T_Y, T_I, SC_RPLUS, 
                                       T_A,        T_U );

steno_layout_t* get_steno_layout(void) { return g_steno_layout; }

You'll find an example in my personal keymap here

By default the keyboard is in full NKRO, you can test the keyboard here http://random.xem.us/rollover.html

  • Keyboard Maintainer: FromtonRouge
  • Hardware Supported: Teensy 3.2

Make example for this keyboard (after setting up your build environment):

make handwired/kaladrius:[your_layout]

See the build environment setup and the make instructions for more information. Brand new to QMK? Start with our Complete Newbs Guide.