Accidentally published before and don't have admin privileges to delete the repository... This is a keyboard that uses chording. It requires five fingers on one hand (designed for left) along with one right finger. It uses binary representation with five buttons to cover 29 unique gestures (27 letters of the alphabet, space bar, and backspace). I made this so that I could manipulate some parameter with my hand while being able to still manipulate other equipment (such as knobs on a distortion box).

Dependencies:   USBDevice mbed

Fork of USBKeyboard_HelloWorld by Samuel Mokrani

main.cpp

Committer:
nonchalamment
Date:
2017-06-22
Revision:
7:cc377cca1e3b
Parent:
5:03a4211d593a

File content as of revision 7:cc377cca1e3b:

#include "mbed.h"
#include "USBKeyboard.h"

DigitalOut blue(LED1);
DigitalOut green(LED2);
DigitalOut red(LED3);

DigitalOut salami(D11);
DigitalOut ham(D12);
DigitalOut sausage(D13);

DigitalIn a(D2);
DigitalIn b(D3);
DigitalIn c(D6);

DigitalIn d(D7);
DigitalIn e(D8);
DigitalIn z(D9);

USBKeyboard keyboard;
Timer timer;

int main() {
    a.mode(PullUp);
    b.mode(PullUp);
    c.mode(PullUp);
    d.mode(PullUp);
    e.mode(PullUp);
    z.mode(PullUp);
    blue = 1;
    green = 1;
    red = 1;
 //   uint8_t p_bus = 0;
          
    while(1) {
        blue = -(a + d);
        green = -(b + e);
        red =  -(c + z);
        salami = !d;
        ham = !e;
        sausage = z;
        
        if (a != 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
                keyboard.keyCode(13);
                wait(0.01);
                }
            }
        if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
            wait(0.1);
            if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
                keyboard.keyCode(8);
                wait(0.01);
                }
            }
        if (a != 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('k');
                wait(0.01);
                }
            }
        if (a != 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
                keyboard.keyCode('l');
                wait(0.01);
                }
            }
        if (a != 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
                keyboard.keyCode('m');
                wait(0.01);
                }
            }
        if (a == 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
            wait(0.1);
            if (a == 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
                keyboard.keyCode('n');
                wait(0.01);
                }
            }       
        if (a == 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a == 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('p');
                wait(0.01);
                }
            }
        if (a == 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
            wait(0.1);
            if (a == 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
                keyboard.keyCode('q');
                wait(0.01);
                }
            }
        if (a == 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a == 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('r');
                wait(0.01);
                }
            }
        if (a == 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
            wait(0.1);
            if (a == 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
                keyboard.keyCode('s');
                wait(0.01);
                }
            }
        if (a == 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
            wait(0.1);
            if (a == 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
                keyboard.keyCode('t');
                wait(0.01);
                }
            }
        if (a != 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('v');
                wait(0.01);
                }
            }
        if (a != 0 && b == 0 && c == 0 && d != 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c == 0 && d != 0 && e == 0 && z == 0){
                keyboard.keyCode('w');
                wait(0.01);
                }
            }
        if (a != 0 && b == 0 && c != 0 && d == 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c != 0 && d == 0 && e == 0 && z == 0){
                keyboard.keyCode('x');
                wait(0.01);
                }
            }
        if (a != 0 && b != 0 && c == 0 && d == 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c == 0 && d == 0 && e == 0 && z == 0){
                keyboard.keyCode('y');
                wait(0.01);
                }
            }
        if (a == 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a == 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('z');
                wait(0.01);
                }
            }
        if(a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && z == 0){
                keyboard.keyCode(32);
                wait(0.01);
                }
            }    
        if(a == 0 && z == 0 && b != 0 && c != 0 && d != 0 && e != 0){
            wait(0.1);
            if(a == 0 && z == 0 && b != 0 && c != 0 && d != 0 && e != 0){
               keyboard.keyCode('a');
               wait(0.01);
               }
            }
        if(a == 0 && b == 0 && z == 0 && c != 0 && d != 0 && e != 0){
            wait(0.1);
            if (a == 0 && b == 0 && z == 0 && c != 0 && d != 0 && e != 0){
                keyboard.keyCode('e');
                wait(0.01);
                }
            }
        if(a == 0 && c == 0 && z == 0 && b != 0 && d != 0 && e != 0){
            wait(0.1);
            if (a == 0 && c == 0 && z == 0 && b != 0 && d != 0 && e != 0){
                keyboard.keyCode('i');
                wait(0.01);
                }
            }
        if(a == 0 && e == 0 && z == 0 && b != 0 && c != 0 && d != 0){
            wait(0.1);
            if (a == 0 && e == 0 && z == 0 && b != 0 && c != 0 && d != 0){
                keyboard.keyCode('u');
                wait(0.01);
                }
            }
        if(a == 0 && d == 0 && z == 0 && b != 0 && c != 0 && e != 0){
            wait(0.1);
            if (a == 0 && d == 0 && z == 0 && b != 0 && c != 0 && e != 0){
                keyboard.keyCode('o');
                wait(0.01);
                }
            }
        if(a != 0 && b == 0 && c != 0 && d != 0 && e != 0 && z == 0){
            wait (0.1);
            if (a != 0 && b == 0 && c != 0 && d != 0 && e != 0 && z == 0){
                keyboard.keyCode('b');
                wait(0.01);
                }
            }
        if(a !=0 && b != 0 && c == 0 && d != 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c == 0 && d != 0 && e != 0 && z == 0){
                keyboard.keyCode('c');
                wait(0.01);
                }
            }
        if(a != 0 && b != 0 && c != 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c != 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('d');
                wait(0.01);
                }
            }
        if(a != 0 && b != 0 && c != 0 && d != 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b != 0 && c != 0 && d != 0 && e == 0 && z == 0){
                keyboard.keyCode('f');
                wait(0.01);
                }
            }
        if(a != 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
                keyboard.keyCode('g');
                wait(0.01);
                }
            }
        if(a != 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
                keyboard.keyCode('h');
                wait(0.01);
            }
        }
        if (a != 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
            wait(0.1);
            if (a != 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
                keyboard.keyCode('j');
                wait(0.01);
            }
                  
    
    
        }
    }
}