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

Committer:
nonchalamment
Date:
Thu Jun 22 18:43:13 2017 +0000
Revision:
7:cc377cca1e3b
Parent:
5:03a4211d593a
:)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 1:291a88a2c151 1 #include "mbed.h"
samux 1:291a88a2c151 2 #include "USBKeyboard.h"
nonchalamment 7:cc377cca1e3b 3
nonchalamment 7:cc377cca1e3b 4 DigitalOut blue(LED1);
nonchalamment 7:cc377cca1e3b 5 DigitalOut green(LED2);
nonchalamment 7:cc377cca1e3b 6 DigitalOut red(LED3);
nonchalamment 7:cc377cca1e3b 7
nonchalamment 7:cc377cca1e3b 8 DigitalOut salami(D11);
nonchalamment 7:cc377cca1e3b 9 DigitalOut ham(D12);
nonchalamment 7:cc377cca1e3b 10 DigitalOut sausage(D13);
nonchalamment 7:cc377cca1e3b 11
nonchalamment 7:cc377cca1e3b 12 DigitalIn a(D2);
nonchalamment 7:cc377cca1e3b 13 DigitalIn b(D3);
nonchalamment 7:cc377cca1e3b 14 DigitalIn c(D6);
nonchalamment 7:cc377cca1e3b 15
nonchalamment 7:cc377cca1e3b 16 DigitalIn d(D7);
nonchalamment 7:cc377cca1e3b 17 DigitalIn e(D8);
nonchalamment 7:cc377cca1e3b 18 DigitalIn z(D9);
nonchalamment 7:cc377cca1e3b 19
samux 3:8b56768ceca2 20 USBKeyboard keyboard;
nonchalamment 7:cc377cca1e3b 21 Timer timer;
nonchalamment 7:cc377cca1e3b 22
nonchalamment 7:cc377cca1e3b 23 int main() {
nonchalamment 7:cc377cca1e3b 24 a.mode(PullUp);
nonchalamment 7:cc377cca1e3b 25 b.mode(PullUp);
nonchalamment 7:cc377cca1e3b 26 c.mode(PullUp);
nonchalamment 7:cc377cca1e3b 27 d.mode(PullUp);
nonchalamment 7:cc377cca1e3b 28 e.mode(PullUp);
nonchalamment 7:cc377cca1e3b 29 z.mode(PullUp);
nonchalamment 7:cc377cca1e3b 30 blue = 1;
nonchalamment 7:cc377cca1e3b 31 green = 1;
nonchalamment 7:cc377cca1e3b 32 red = 1;
nonchalamment 7:cc377cca1e3b 33 // uint8_t p_bus = 0;
nonchalamment 7:cc377cca1e3b 34
nonchalamment 7:cc377cca1e3b 35 while(1) {
nonchalamment 7:cc377cca1e3b 36 blue = -(a + d);
nonchalamment 7:cc377cca1e3b 37 green = -(b + e);
nonchalamment 7:cc377cca1e3b 38 red = -(c + z);
nonchalamment 7:cc377cca1e3b 39 salami = !d;
nonchalamment 7:cc377cca1e3b 40 ham = !e;
nonchalamment 7:cc377cca1e3b 41 sausage = z;
nonchalamment 7:cc377cca1e3b 42
nonchalamment 7:cc377cca1e3b 43 if (a != 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 44 wait(0.1);
nonchalamment 7:cc377cca1e3b 45 if (a != 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 46 keyboard.keyCode(13);
nonchalamment 7:cc377cca1e3b 47 wait(0.01);
nonchalamment 7:cc377cca1e3b 48 }
nonchalamment 7:cc377cca1e3b 49 }
nonchalamment 7:cc377cca1e3b 50 if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 51 wait(0.1);
nonchalamment 7:cc377cca1e3b 52 if (a == 0 && b == 0 && c == 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 53 keyboard.keyCode(8);
nonchalamment 7:cc377cca1e3b 54 wait(0.01);
nonchalamment 7:cc377cca1e3b 55 }
nonchalamment 7:cc377cca1e3b 56 }
nonchalamment 7:cc377cca1e3b 57 if (a != 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 58 wait(0.1);
nonchalamment 7:cc377cca1e3b 59 if (a != 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 60 keyboard.keyCode('k');
nonchalamment 7:cc377cca1e3b 61 wait(0.01);
nonchalamment 7:cc377cca1e3b 62 }
nonchalamment 7:cc377cca1e3b 63 }
nonchalamment 7:cc377cca1e3b 64 if (a != 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 65 wait(0.1);
nonchalamment 7:cc377cca1e3b 66 if (a != 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 67 keyboard.keyCode('l');
nonchalamment 7:cc377cca1e3b 68 wait(0.01);
nonchalamment 7:cc377cca1e3b 69 }
nonchalamment 7:cc377cca1e3b 70 }
nonchalamment 7:cc377cca1e3b 71 if (a != 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 72 wait(0.1);
nonchalamment 7:cc377cca1e3b 73 if (a != 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 74 keyboard.keyCode('m');
nonchalamment 7:cc377cca1e3b 75 wait(0.01);
nonchalamment 7:cc377cca1e3b 76 }
nonchalamment 7:cc377cca1e3b 77 }
nonchalamment 7:cc377cca1e3b 78 if (a == 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 79 wait(0.1);
nonchalamment 7:cc377cca1e3b 80 if (a == 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 81 keyboard.keyCode('n');
nonchalamment 7:cc377cca1e3b 82 wait(0.01);
nonchalamment 7:cc377cca1e3b 83 }
nonchalamment 7:cc377cca1e3b 84 }
nonchalamment 7:cc377cca1e3b 85 if (a == 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 86 wait(0.1);
nonchalamment 7:cc377cca1e3b 87 if (a == 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 88 keyboard.keyCode('p');
nonchalamment 7:cc377cca1e3b 89 wait(0.01);
nonchalamment 7:cc377cca1e3b 90 }
nonchalamment 7:cc377cca1e3b 91 }
nonchalamment 7:cc377cca1e3b 92 if (a == 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 93 wait(0.1);
nonchalamment 7:cc377cca1e3b 94 if (a == 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 95 keyboard.keyCode('q');
nonchalamment 7:cc377cca1e3b 96 wait(0.01);
nonchalamment 7:cc377cca1e3b 97 }
nonchalamment 7:cc377cca1e3b 98 }
nonchalamment 7:cc377cca1e3b 99 if (a == 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 100 wait(0.1);
nonchalamment 7:cc377cca1e3b 101 if (a == 0 && b != 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 102 keyboard.keyCode('r');
nonchalamment 7:cc377cca1e3b 103 wait(0.01);
nonchalamment 7:cc377cca1e3b 104 }
nonchalamment 7:cc377cca1e3b 105 }
nonchalamment 7:cc377cca1e3b 106 if (a == 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 107 wait(0.1);
nonchalamment 7:cc377cca1e3b 108 if (a == 0 && b != 0 && c == 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 109 keyboard.keyCode('s');
nonchalamment 7:cc377cca1e3b 110 wait(0.01);
nonchalamment 7:cc377cca1e3b 111 }
nonchalamment 7:cc377cca1e3b 112 }
nonchalamment 7:cc377cca1e3b 113 if (a == 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 114 wait(0.1);
nonchalamment 7:cc377cca1e3b 115 if (a == 0 && b != 0 && c != 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 116 keyboard.keyCode('t');
nonchalamment 7:cc377cca1e3b 117 wait(0.01);
nonchalamment 7:cc377cca1e3b 118 }
nonchalamment 7:cc377cca1e3b 119 }
nonchalamment 7:cc377cca1e3b 120 if (a != 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 121 wait(0.1);
nonchalamment 7:cc377cca1e3b 122 if (a != 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 123 keyboard.keyCode('v');
nonchalamment 7:cc377cca1e3b 124 wait(0.01);
nonchalamment 7:cc377cca1e3b 125 }
nonchalamment 7:cc377cca1e3b 126 }
nonchalamment 7:cc377cca1e3b 127 if (a != 0 && b == 0 && c == 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 128 wait(0.1);
nonchalamment 7:cc377cca1e3b 129 if (a != 0 && b == 0 && c == 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 130 keyboard.keyCode('w');
nonchalamment 7:cc377cca1e3b 131 wait(0.01);
nonchalamment 7:cc377cca1e3b 132 }
nonchalamment 7:cc377cca1e3b 133 }
nonchalamment 7:cc377cca1e3b 134 if (a != 0 && b == 0 && c != 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 135 wait(0.1);
nonchalamment 7:cc377cca1e3b 136 if (a != 0 && b == 0 && c != 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 137 keyboard.keyCode('x');
nonchalamment 7:cc377cca1e3b 138 wait(0.01);
nonchalamment 7:cc377cca1e3b 139 }
nonchalamment 7:cc377cca1e3b 140 }
nonchalamment 7:cc377cca1e3b 141 if (a != 0 && b != 0 && c == 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 142 wait(0.1);
nonchalamment 7:cc377cca1e3b 143 if (a != 0 && b != 0 && c == 0 && d == 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 144 keyboard.keyCode('y');
nonchalamment 7:cc377cca1e3b 145 wait(0.01);
nonchalamment 7:cc377cca1e3b 146 }
nonchalamment 7:cc377cca1e3b 147 }
nonchalamment 7:cc377cca1e3b 148 if (a == 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 149 wait(0.1);
nonchalamment 7:cc377cca1e3b 150 if (a == 0 && b == 0 && c == 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 151 keyboard.keyCode('z');
nonchalamment 7:cc377cca1e3b 152 wait(0.01);
nonchalamment 7:cc377cca1e3b 153 }
nonchalamment 7:cc377cca1e3b 154 }
nonchalamment 7:cc377cca1e3b 155 if(a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 156 wait(0.1);
nonchalamment 7:cc377cca1e3b 157 if (a != 0 && b != 0 && c != 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 158 keyboard.keyCode(32);
nonchalamment 7:cc377cca1e3b 159 wait(0.01);
nonchalamment 7:cc377cca1e3b 160 }
nonchalamment 7:cc377cca1e3b 161 }
nonchalamment 7:cc377cca1e3b 162 if(a == 0 && z == 0 && b != 0 && c != 0 && d != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 163 wait(0.1);
nonchalamment 7:cc377cca1e3b 164 if(a == 0 && z == 0 && b != 0 && c != 0 && d != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 165 keyboard.keyCode('a');
nonchalamment 7:cc377cca1e3b 166 wait(0.01);
nonchalamment 7:cc377cca1e3b 167 }
nonchalamment 7:cc377cca1e3b 168 }
nonchalamment 7:cc377cca1e3b 169 if(a == 0 && b == 0 && z == 0 && c != 0 && d != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 170 wait(0.1);
nonchalamment 7:cc377cca1e3b 171 if (a == 0 && b == 0 && z == 0 && c != 0 && d != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 172 keyboard.keyCode('e');
nonchalamment 7:cc377cca1e3b 173 wait(0.01);
nonchalamment 7:cc377cca1e3b 174 }
nonchalamment 7:cc377cca1e3b 175 }
nonchalamment 7:cc377cca1e3b 176 if(a == 0 && c == 0 && z == 0 && b != 0 && d != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 177 wait(0.1);
nonchalamment 7:cc377cca1e3b 178 if (a == 0 && c == 0 && z == 0 && b != 0 && d != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 179 keyboard.keyCode('i');
nonchalamment 7:cc377cca1e3b 180 wait(0.01);
nonchalamment 7:cc377cca1e3b 181 }
nonchalamment 7:cc377cca1e3b 182 }
nonchalamment 7:cc377cca1e3b 183 if(a == 0 && e == 0 && z == 0 && b != 0 && c != 0 && d != 0){
nonchalamment 7:cc377cca1e3b 184 wait(0.1);
nonchalamment 7:cc377cca1e3b 185 if (a == 0 && e == 0 && z == 0 && b != 0 && c != 0 && d != 0){
nonchalamment 7:cc377cca1e3b 186 keyboard.keyCode('u');
nonchalamment 7:cc377cca1e3b 187 wait(0.01);
nonchalamment 7:cc377cca1e3b 188 }
nonchalamment 7:cc377cca1e3b 189 }
nonchalamment 7:cc377cca1e3b 190 if(a == 0 && d == 0 && z == 0 && b != 0 && c != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 191 wait(0.1);
nonchalamment 7:cc377cca1e3b 192 if (a == 0 && d == 0 && z == 0 && b != 0 && c != 0 && e != 0){
nonchalamment 7:cc377cca1e3b 193 keyboard.keyCode('o');
nonchalamment 7:cc377cca1e3b 194 wait(0.01);
nonchalamment 7:cc377cca1e3b 195 }
nonchalamment 7:cc377cca1e3b 196 }
nonchalamment 7:cc377cca1e3b 197 if(a != 0 && b == 0 && c != 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 198 wait (0.1);
nonchalamment 7:cc377cca1e3b 199 if (a != 0 && b == 0 && c != 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 200 keyboard.keyCode('b');
nonchalamment 7:cc377cca1e3b 201 wait(0.01);
nonchalamment 7:cc377cca1e3b 202 }
nonchalamment 7:cc377cca1e3b 203 }
nonchalamment 7:cc377cca1e3b 204 if(a !=0 && b != 0 && c == 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 205 wait(0.1);
nonchalamment 7:cc377cca1e3b 206 if (a != 0 && b != 0 && c == 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 207 keyboard.keyCode('c');
nonchalamment 7:cc377cca1e3b 208 wait(0.01);
nonchalamment 7:cc377cca1e3b 209 }
nonchalamment 7:cc377cca1e3b 210 }
nonchalamment 7:cc377cca1e3b 211 if(a != 0 && b != 0 && c != 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 212 wait(0.1);
nonchalamment 7:cc377cca1e3b 213 if (a != 0 && b != 0 && c != 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 214 keyboard.keyCode('d');
nonchalamment 7:cc377cca1e3b 215 wait(0.01);
nonchalamment 7:cc377cca1e3b 216 }
nonchalamment 7:cc377cca1e3b 217 }
nonchalamment 7:cc377cca1e3b 218 if(a != 0 && b != 0 && c != 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 219 wait(0.1);
nonchalamment 7:cc377cca1e3b 220 if (a != 0 && b != 0 && c != 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 221 keyboard.keyCode('f');
nonchalamment 7:cc377cca1e3b 222 wait(0.01);
nonchalamment 7:cc377cca1e3b 223 }
nonchalamment 7:cc377cca1e3b 224 }
nonchalamment 7:cc377cca1e3b 225 if(a != 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 226 wait(0.1);
nonchalamment 7:cc377cca1e3b 227 if (a != 0 && b == 0 && c == 0 && d != 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 228 keyboard.keyCode('g');
nonchalamment 7:cc377cca1e3b 229 wait(0.01);
nonchalamment 7:cc377cca1e3b 230 }
nonchalamment 7:cc377cca1e3b 231 }
nonchalamment 7:cc377cca1e3b 232 if(a != 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 233 wait(0.1);
nonchalamment 7:cc377cca1e3b 234 if (a != 0 && b == 0 && c != 0 && d == 0 && e != 0 && z == 0){
nonchalamment 7:cc377cca1e3b 235 keyboard.keyCode('h');
nonchalamment 7:cc377cca1e3b 236 wait(0.01);
nonchalamment 7:cc377cca1e3b 237 }
nonchalamment 7:cc377cca1e3b 238 }
nonchalamment 7:cc377cca1e3b 239 if (a != 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 240 wait(0.1);
nonchalamment 7:cc377cca1e3b 241 if (a != 0 && b == 0 && c != 0 && d != 0 && e == 0 && z == 0){
nonchalamment 7:cc377cca1e3b 242 keyboard.keyCode('j');
nonchalamment 7:cc377cca1e3b 243 wait(0.01);
nonchalamment 7:cc377cca1e3b 244 }
nonchalamment 7:cc377cca1e3b 245
nonchalamment 7:cc377cca1e3b 246
nonchalamment 7:cc377cca1e3b 247
nonchalamment 7:cc377cca1e3b 248 }
samux 1:291a88a2c151 249 }
samux 4:f0df6aae7147 250 }