Coder Social home page Coder Social logo

asetniop-keyboard's Introduction

asetniop-keyboard

This is my chorded keyboard project. If you don't already know, a chorded keyboard is a keyboard that makes use of combinations of keys pressed at the same time (a chords) rather than individual keypresses for typing. (It could be said that qwerty is chorded: Using chords like 'shift'+'A' for a capital 'A' or 'ctrl'+'V' for commonly found paste functions, but this misses the heart of the thing.)

keyboard detail

It works pretty good for the hacky experiment it is, and is rather comfortable to type on. I'm still not up to my qwerty typing speed, but it took me a long time to develop that, so I'm estimating that the time to develop typing speed on qwerty vs asetniop are about the same. Asetniop may have the difference that it will force you to touch type right away, which could be seen as good or bad.

You can watch a short typing demo here.

Inspired by asetniop and built using teensy.

keyboard detail

Installation

Keys are wired up directly to the pins D0 - D7. There are ways to do this that would save pins, but I like this method because it's easy, and I don't need the extra pins for anything.

wiring diagram

If you're on linux like me you may want to use the bootloader

sudo ./teensy_loader_cli/teensy_loader_cli --mcu=atmega32u4 asetniop.hex -w

Otherwise you'll have to flash the firmware some other way. Message me if you don't know how and I'll try to help you out.

Bill of materials

Typing guide

If you want to start learning about typing with this style of chorded keyboard, you can use the asetniop online demo to start learning asetniop in your web browser using your qwerty keyboard. This way you can find out what its like to type with a chorded keyboard without needing to do anything radical like building a keyboard.

There are a number of additions to the asetniop chords to expand this project into a more general keyboard. Also my keyboard only has eight keys, so doesn't use the thumbs at all. I'll explain below.

For the purpose of this guide I'm representing chords with a series of '.'s and '#'s. The '#'s represent a key being pressed down, and the '.'s a key left unpressed. Read from left to right the keys represented are the left pinky key through to the right pinky key.

Numbers

The numbers all use .### on the left as somewhat of a prefix, and then follows a binary sequence from 0 to 9.

.### .... : 0
.### ...# : 1
.### ..#. : 2
.### ..## : 3
.### .#.. : 4
.### .#.# : 5
.### .##. : 6
.### .### : 7
.### #... : 8
.### #..# : 9

Arrow keys

Like with the numbers the arrow keys use a 'prefix'. They all start with the 'w' key; ##..

##.. ...# : up
##.. ..## : down
##.. ..#. : left
##.. .#.. : right

Non-alphanumeric

The non-alphanumeric keys were some of the first I wanted for interacting with my computer. The way the 'ctrl', 'shift', 'alt', and 'mod/window' keys work is that you press the chord, and then it is applied to the next chord that is pressed. For example, to get a '?' you would press #### ..#. and then press #... ...#

#### ...# : ctrl
#### ..#. : shift
#### .#.. : alt
#### #... : mod/window
.... #### : space
...# #### : enter
###. .... : tab
#### .... : esc

The rest of the keys may be a bit confusing, because I didn't add chords for anything that would normally be accessed by pressing shift+'some key'. So, for example, to use a '!' you need to press the chord for shift followed by the key for 1. because of this it's important to remember where all the symbols are on the qwerty keyboard. (assuming you want to use them.)

Of the rest of the keys, some of them may be in the original asetniop, and others I may have added or changed. I don't really remember which is which, sorry.

.... ##.# : [
.... #.## : ]
#... ...# : /
#... ..#. : \
#... #### : `
..#. ..#. : -
..#. ..## : =

Random nonsense

  • Chord started before previous chord released separation. Now you can press ..#. ...., ..## ...., ..#. ... for "ere". Play around with it.
  • multibackspace: undo as many keypresses as were sent on the last chord release, for example if you type "ere" when you meant "r" backspace 3 times is useful.
  • Improved circuit design to use 3 rather than 5 wires to the keys. Then chinsy audio cables could be used!
  • abandon wired and write this on a bluetooth platform
  • macro functionality.
  • saving & dumping macros.
  • some kinda ml for separating chords, cause I type "ere" a lot, but not "sds" so much.

blah blah blah

I'd like to add the rest of the keys on a standard keyboard, and maybe some special function keys, but I'm not sure when I'll get around to it.

Further down the line I would like to experiment with adding joystick / mouse functionality, and building a wireless pair.

Or abandoning this and making a pair that maps the fingers onto a ternary, rather than binary, system. You know, for the 3 positions ^ 10 fingers = 59049 chords, rather than the 2 positions ^ 8 fingers = 256 chords availiable on my current system. If I assume 12 axes because the thumbs move in two axes so nicely that gives me: 3 positions ^ 12 axes = 531441. That's 3 positions ^ 6 axes = 729 chords on one hand! The trouble then would never be space, but figuring out how to organise all the chords. Ok, it would probably still be space at some point, because who wants to be stuck with a vocabulary of just over half a million. So lame right?

asetniop-keyboard's People

Contributors

h3xx avatar tristantrim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

asetniop-keyboard's Issues

Parts list and instructions

I'd love to attempt to replicate what you did, but the instructions are kind of sparse. Having the model files for the ergonomic 3D-printed sections is great, but what I'd like to know is:

  • How are the rows of keyboard keys constructed? What parts are they assembled from? Can you buy them pre-assembled? (I'm having trouble googling because I don't even know what they're called)
  • What model of Arduino board did you use? I'd assume it was a USB-capable one, but it would be helpful to have a CPU model.
  • From how you coded the Arduino board's logic, what's the wiring diagram supposed to look like?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.