Steno typing (Plover) - Desktop Customization & Workflow

Users browsing this thread: 3 Guest(s)
stratex
Nixers
Initial hardware/software setup.
I have a QMK based custom hand-wired keyboard, with atmega32u4 controller (teensy 2.0). And I run Gentoo Linux, so most of what I will describe below are for my particular environment.

First thing first I had to re-do my crossdev build environment to be able to edit and re-flash the keyboard firmware. In Gentoo you compile everything yourself, but compiling for different architecture other than your host is not as straight forward as just gcc *something*. But it's not that difficult either. For desktop profile these are the steps I followed:
# Emerging needed tools
sudo emerge --ask sys-devel/crossdev
sudo emerge --ask dev-embedded/teensy_loader_cli-9999
# Creating the avr toolchain
sudo crossdev -s4 --stable --target avr --portage --verbose
# Cloning qmk repo
git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
make git-submodule
# I copy my custom keymap to a firmware directory tree
cp -r ~/mykeymap/ ./keyboards/mykeymap
# Compiling the firmware after that is done as easy as just:
make mykeymap:default
# And finally to flash I use teensy_loader_cli (it's from my overlay, doesn't come with Gentoo by default)
# I think you can also use avrdude to flash, but I wasn't able to do it.
teensy_loader_cli -mmcu=atmega32u4 -w mykeymap_default.hex
#(press the button on teensy)

There are two different types of Steno emulation, one is when Plover software works with any regular keycodes, and emulates steno this way. The downside is that you can't have a dedicated Steno layer.
The other way is to emulate a Steno machine via a virtual serial port, this way you run Plover software once and can just switch between regular keyboard layer and a dedicated steno layer. The following settings are for the second option.

Things to add to a keymap files:
in config.h add
#define FORCE_NKRO
to rules.mk add
STENO_ENABLE = yes
NKRO_ENABLE = yes
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
and finally you should add the following either to your keymap.c directly, or include it from any other file:
#include "quantum.h"
#include "keymap_steno.h"
void matrix_init_user() {
steno_set_mode(STENO_MODE_GEMINI);
}

Then I made a Plover layout in my keymap.c, referencing qmk_firmware/keyboards/planck/keymaps/steno/keymap.c (important thing is to use STN_* keycodes).

This is my final layout:
Code:
[8] = {
  {STN_N1,  STN_N2,  STN_N3,  STN_N4,  STN_N5,  STN_N6,  STN_N7,  STN_N8,  STN_N9,  STN_NA,  STN_NB},
  {STN_S1,  STN_TL,  STN_PL,  STN_HL,  STN_ST1, STN_ST3, STN_FR,  STN_PR,  STN_LR,  STN_TR,  STN_DR},
  {STN_S2,  STN_KL,  STN_WL,  STN_RL,  STN_ST2, STN_ST4, STN_RR,  STN_BR,  STN_GR,  STN_SR,  STN_ZR},
  {_______, _______, _______, STN_A,   STN_O,   STN_E,   STN_U, _______, STN_PWR, STN_RES1, STN_RES2}
},
I think it's correct (I'm not really sure, it's hard to find a hand placement diagram for steno machine, plus my keyboard is 4x11, while steno machine is 2x10).

Finally after compiling and flashing (I use teensy_loader_cli) and reconnecting the keyboard, I could start Plover, but, for some reason on my system it did not see "Gemini PR" machine at first, I had to go to the settings and Scan the /dev/ttyACM0 device once, then it initialized and the Plover layer was ready to use.
To make it run at boot I checkboxed 'Enable at start' in settings of Plover, and added 'plover --gui none &' to my .xinitrc


Messages In This Thread
Steno typing (Plover) - by stratex - 25-10-2020, 03:00 PM
RE: Steno typing (Plover) - by stratex - 26-10-2020, 06:12 PM
RE: Steno typing (Plover) - by venam - 27-10-2020, 03:28 AM
RE: Steno typing (Plover) - by stratex - 27-10-2020, 11:25 AM
RE: Steno typing (Plover) - by stratex - 30-10-2020, 03:48 PM