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).
Fork of USBKeyboard_HelloWorld by
main.cpp@7:cc377cca1e3b, 2017-06-22 (annotated)
- Committer:
- nonchalamment
- Date:
- Thu Jun 22 18:43:13 2017 +0000
- Revision:
- 7:cc377cca1e3b
- Parent:
- 5:03a4211d593a
:)
Who changed what in which revision?
User | Revision | Line number | New 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 | } |