Plover

Hacking/typing/writing…

            at 200 words per minute

Speaker:

Ted Morin

Captioned by:

Mirabai Knight

GIF: Stanley Sakai

@morinted

www.tedmor.in

Ted Morin

introduce(person="Ted",
          to="Audience",
          reason="Plover")

Machines, left to right top to bottom:

Treal TR, Elan Cybra, Infinity Ergonomic, LightSpeed

Find it on Steam

- What is Stenography?
- How fast do we need to type?
- Steno layout and basics
- History of Open Steno
- Written in Python
- Future of steno (and you)

Table of Contents

Stenography (steno for short)

Two variants: written shorthand…

…and machine stenography

Phonetic > Orthographic

nauseous, cautious, conscious

naw-shs, caw-shs, con-shs

 

particular, particularly

p-lar, p-lar-l

1 chorded stroke vs 12 keystrokes

Less movement == SPEED!

I don't know, Ted, I type pretty fast.

- A skeptic

How does it work?

Thinking with Portals

think-ing w portal-s

thi-g w porl-s

THEUG W PORLS

What is Steno Good For?

  • Accessibility, #a11y
    • 1 in 5 Americans report hearing loss. 1 in 3 above 65 years.
    • People who don't speak can't easily communicate.
  • Typing speed
    • Double typing speed: many people type for work.
    • RSI concerns.
    • Personal note taking and chatting.

Coding in Steno

Learning Steno 10 Years Ago:

A walled garden of expensive proprietary choices.

$1000 to $4000

$1000s, renewed anually

1-7 years in college

Total:

Student loans galore

$

$

$

Learning Steno Today:

Libre software, free games, open community, free texts, cheap hardware.

 

Let's explore what changed.

Mirabai Knight

Joshua Lifton

PLOVER!!

Dolores

DLORS

Plover

PHROFR

Hesky Fisher

Zack Brown

My journey as

a typing enthusiast

ErgoDox

Tréal TR

Personal score chart from TypeRacer.com

How does Plover work?

- Pythonistas

from shorthand import stenography
stenography()
# DONE!
# ...I wish.
"""
We actually need:
- Input (Hardware)
- Plover (steno engine)
- Output (Emulated key strokes)
"""

Left to right, top to bottom: Quickfire NKRO keyboard, Charley's homemade breadboard machine, SOFT/HRUF, Infinity Ergonomic, Stenoboard

NKRO/anti-ghosting/full key rollover:

All keys on the keyboard can be registered at once. Most USB   keyboards support 6KRO or less.

- $50-100 depending on the model.

Recommended switches:

  light linear (Gateron Clears, Matias Reds, or Cherry Reds)

{ "PAOEU/TKPW*OT/A*PL": "PyGotham"
, "KHR-BG": "{#control(c)}"
, "SPHEUFBG": "{^awesomistically}"
, "HEU": "hi"
, "PHOPL": "mom"
, "KHREU": "{^ically}"
, "TED": "Ted"
, "PHRARL" : "particularly"
, "TK-F": "{>}def"
, "TKPWEUT/KR*R":
    "{^}git push origin HEAD:refs/for/master{#Return}"
, "SP*LT": "{#command(space)}"
, "PHR-FPLT": "Mr.{-|}"
, "...": "Plover comes with over 140,000 entries"
}

Steno contains quite a bit of logic:

User dictionaries, othography rules, output state

# Linux
from Xlib import X, XK, display
from Xlib.ext import xinput, xtest
from Xlib.ext.ge import GenericEventCode

# Windows
import ctypes
SendInput = ctypes.windll.user32.SendInput

# macOS
from Quartz import (
    CFMachPortCreateRunLoopSource,
    CFRunLoopAddSource,
    CFRunLoopGetCurrent,
    CFRunLoopRun,
    CFRunLoopStop,
    CGEventCreateKeyboardEvent,
    CGEventGetFlags,
    CGEventGetIntegerValueField,
    CGEventMaskBit,
    CGEventPost,
    CGEventSetFlags,
    CGEventSourceCreate,
    CGEventSourceGetSourceStateID,
    CGEventTapCreate,
    CGEventTapEnable,
    kCFRunLoopCommonModes,
    kCGEventFlagMaskAlternate,
    kCGEventFlagMaskCommand,
    kCGEventFlagMaskControl,
    kCGEventFlagMaskNonCoalesced,
    kCGEventFlagMaskShift,
    kCGEventKeyDown,
    kCGEventKeyUp,
    kCGEventSourceStateID,
    kCGEventTapOptionDefault,
    kCGHeadInsertEventTap,
    kCGKeyboardEventKeycode,
    kCGSessionEventTap,
)

Output: simulated keypresses

Image source: http://emojione.com/

"Emojis: loved by everyone except sane developers"

What About the Future?

  • Growing the community.
  • Supporting other languages.
  • Porting to Python 3.
  • Supporting more hardware.
  • Extending features to make steno more powerful than it has ever been.

OpenSteno.org

OpenSteno.org

 

Ted Morin, @morinted, www.tedmor.in

 

Special thanks to:

devs (Josh, Hesky, Mike, gcr, Brent, Benoit Pierre)

stenographers (Stanley Sakai, Mirabai Knight)

community (Charley, Nat, Sooty, Tim, and many more)

Made with Slides.com