Christian Castaneda
/
idd_summer17_hw2_christianjc_09_textDevice
standard keyboard with 10 keys
Fork of USBKeyboard_HelloWorld by
main.cpp@7:76ef20647568, 2017-06-22 (annotated)
- Committer:
- christianjc_09
- Date:
- Thu Jun 22 07:49:59 2017 +0000
- Revision:
- 7:76ef20647568
- Parent:
- 5:03a4211d593a
Text entry device
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" |
christianjc_09 | 7:76ef20647568 | 3 | |
samux | 3:8b56768ceca2 | 4 | USBKeyboard keyboard; |
christianjc_09 | 7:76ef20647568 | 5 | |
christianjc_09 | 7:76ef20647568 | 6 | //Bus of buttons |
christianjc_09 | 7:76ef20647568 | 7 | BusInOut buttons(D2, D3, D4, D5, D6, D7, D8, D9, D10, D11); |
christianjc_09 | 7:76ef20647568 | 8 | BusOut myleds(LED1, LED2, LED3, LED4); |
christianjc_09 | 7:76ef20647568 | 9 | DigitalIn b1(D2),b2(D3),b3(D4),b4(D5),b5(D6),b6(D7),b7(D8),b8(D9),b9(D10),b10(D11); |
christianjc_09 | 7:76ef20647568 | 10 | |
christianjc_09 | 7:76ef20647568 | 11 | int main() { |
christianjc_09 | 7:76ef20647568 | 12 | buttons.input(); |
christianjc_09 | 7:76ef20647568 | 13 | buttons.mode(PullDown); |
christianjc_09 | 7:76ef20647568 | 14 | uint16_t p_bus = 0; |
christianjc_09 | 7:76ef20647568 | 15 | myleds = 4; |
samux | 1:291a88a2c151 | 16 | while (1) { |
christianjc_09 | 7:76ef20647568 | 17 | //if the bus of buttons has changed, send a report |
christianjc_09 | 7:76ef20647568 | 18 | |
christianjc_09 | 7:76ef20647568 | 19 | if (~buttons.read() != p_bus) { |
christianjc_09 | 7:76ef20647568 | 20 | p_bus = ~buttons.read(); |
christianjc_09 | 7:76ef20647568 | 21 | if((b5 == 0)) //Left thumb pressed |
christianjc_09 | 7:76ef20647568 | 22 | { |
christianjc_09 | 7:76ef20647568 | 23 | myleds = 1; |
christianjc_09 | 7:76ef20647568 | 24 | while (1){ |
christianjc_09 | 7:76ef20647568 | 25 | |
christianjc_09 | 7:76ef20647568 | 26 | p_bus = ~buttons.read(); |
christianjc_09 | 7:76ef20647568 | 27 | if (~buttons.read() != p_bus){break;} |
christianjc_09 | 7:76ef20647568 | 28 | } |
christianjc_09 | 7:76ef20647568 | 29 | myleds = 2; |
christianjc_09 | 7:76ef20647568 | 30 | if ((b5==0) && (b1==0)) |
christianjc_09 | 7:76ef20647568 | 31 | { |
christianjc_09 | 7:76ef20647568 | 32 | keyboard.keyCode('w'); |
christianjc_09 | 7:76ef20647568 | 33 | while ((b5==0) && (b1==0)){} |
christianjc_09 | 7:76ef20647568 | 34 | } |
christianjc_09 | 7:76ef20647568 | 35 | if ((b5==0) && (b2==0)) |
christianjc_09 | 7:76ef20647568 | 36 | { |
christianjc_09 | 7:76ef20647568 | 37 | keyboard.keyCode('e'); |
christianjc_09 | 7:76ef20647568 | 38 | while ((b5==0) && (b2==0)){} |
christianjc_09 | 7:76ef20647568 | 39 | } |
christianjc_09 | 7:76ef20647568 | 40 | if ((b5==0) && (b3==0)) |
christianjc_09 | 7:76ef20647568 | 41 | { |
christianjc_09 | 7:76ef20647568 | 42 | keyboard.keyCode('r'); |
christianjc_09 | 7:76ef20647568 | 43 | while ((b5==0) && (b3==0)){} |
christianjc_09 | 7:76ef20647568 | 44 | } |
christianjc_09 | 7:76ef20647568 | 45 | if ((b5==0) && (b4==0)) |
christianjc_09 | 7:76ef20647568 | 46 | { |
christianjc_09 | 7:76ef20647568 | 47 | int count = 0; |
christianjc_09 | 7:76ef20647568 | 48 | while((b5==0)&&(b4==0)&&(count == 0)) |
christianjc_09 | 7:76ef20647568 | 49 | { |
christianjc_09 | 7:76ef20647568 | 50 | if((b5==0)&&(b4==0)&&(b3==0)) |
christianjc_09 | 7:76ef20647568 | 51 | {keyboard.keyCode('g'); |
christianjc_09 | 7:76ef20647568 | 52 | while ((b5==0)&&(b4==0)&&(b3==0)){} |
christianjc_09 | 7:76ef20647568 | 53 | count++;} |
christianjc_09 | 7:76ef20647568 | 54 | } |
christianjc_09 | 7:76ef20647568 | 55 | wait(0.1); |
christianjc_09 | 7:76ef20647568 | 56 | if ((count == 0)) |
christianjc_09 | 7:76ef20647568 | 57 | { |
christianjc_09 | 7:76ef20647568 | 58 | keyboard.keyCode('t'); |
christianjc_09 | 7:76ef20647568 | 59 | } |
christianjc_09 | 7:76ef20647568 | 60 | } |
christianjc_09 | 7:76ef20647568 | 61 | if ((b5==0) && (b7==0)) |
christianjc_09 | 7:76ef20647568 | 62 | { |
christianjc_09 | 7:76ef20647568 | 63 | keyboard.keyCode('y'); |
christianjc_09 | 7:76ef20647568 | 64 | while ((b5==0) && (b7==0)){} |
christianjc_09 | 7:76ef20647568 | 65 | } |
christianjc_09 | 7:76ef20647568 | 66 | if ((b5==0) && (b8==0)) |
christianjc_09 | 7:76ef20647568 | 67 | { |
christianjc_09 | 7:76ef20647568 | 68 | keyboard.keyCode('u'); |
christianjc_09 | 7:76ef20647568 | 69 | while ((b5==0) && (b8==0)){} |
christianjc_09 | 7:76ef20647568 | 70 | } |
christianjc_09 | 7:76ef20647568 | 71 | if ((b5==0) && (b9==0)) |
christianjc_09 | 7:76ef20647568 | 72 | { |
christianjc_09 | 7:76ef20647568 | 73 | keyboard.keyCode('i'); |
christianjc_09 | 7:76ef20647568 | 74 | while ((b5==0) && (b9==0)){} |
christianjc_09 | 7:76ef20647568 | 75 | } |
christianjc_09 | 7:76ef20647568 | 76 | if ((b5==0) && (b10==0)) |
christianjc_09 | 7:76ef20647568 | 77 | { |
christianjc_09 | 7:76ef20647568 | 78 | keyboard.keyCode('o'); |
christianjc_09 | 7:76ef20647568 | 79 | while ((b5==0) && (b10==0)){} |
christianjc_09 | 7:76ef20647568 | 80 | } |
christianjc_09 | 7:76ef20647568 | 81 | if ((b5==0) && (b6==0)) |
christianjc_09 | 7:76ef20647568 | 82 | { |
christianjc_09 | 7:76ef20647568 | 83 | keyboard.keyCode(' '); |
christianjc_09 | 7:76ef20647568 | 84 | while ((b5==0) && (b6==0)){} |
christianjc_09 | 7:76ef20647568 | 85 | } |
christianjc_09 | 7:76ef20647568 | 86 | |
christianjc_09 | 7:76ef20647568 | 87 | } |
christianjc_09 | 7:76ef20647568 | 88 | else if (b6 == 0) //Right thumb pressed |
christianjc_09 | 7:76ef20647568 | 89 | { |
christianjc_09 | 7:76ef20647568 | 90 | |
christianjc_09 | 7:76ef20647568 | 91 | myleds = 1; |
christianjc_09 | 7:76ef20647568 | 92 | while (1){ |
christianjc_09 | 7:76ef20647568 | 93 | if (b6 == 1){ |
christianjc_09 | 7:76ef20647568 | 94 | keyboard.keyCode('h'); |
christianjc_09 | 7:76ef20647568 | 95 | break; |
christianjc_09 | 7:76ef20647568 | 96 | } |
christianjc_09 | 7:76ef20647568 | 97 | p_bus = ~buttons.read(); |
christianjc_09 | 7:76ef20647568 | 98 | if (~buttons.read() != p_bus){break;} |
christianjc_09 | 7:76ef20647568 | 99 | } |
christianjc_09 | 7:76ef20647568 | 100 | myleds = 2; |
christianjc_09 | 7:76ef20647568 | 101 | if ((b6==0) && (b1==0)) |
christianjc_09 | 7:76ef20647568 | 102 | { |
christianjc_09 | 7:76ef20647568 | 103 | keyboard.keyCode('z'); |
christianjc_09 | 7:76ef20647568 | 104 | while ((b6==0) && (b1==0)){} |
christianjc_09 | 7:76ef20647568 | 105 | } |
christianjc_09 | 7:76ef20647568 | 106 | if ((b6==0) && (b2==0)) |
christianjc_09 | 7:76ef20647568 | 107 | { |
christianjc_09 | 7:76ef20647568 | 108 | keyboard.keyCode('x'); |
christianjc_09 | 7:76ef20647568 | 109 | while ((b6==0) && (b2==0)){} |
christianjc_09 | 7:76ef20647568 | 110 | } |
christianjc_09 | 7:76ef20647568 | 111 | if ((b6==0) && (b3==0)) |
christianjc_09 | 7:76ef20647568 | 112 | { |
christianjc_09 | 7:76ef20647568 | 113 | keyboard.keyCode('c'); |
christianjc_09 | 7:76ef20647568 | 114 | while ((b6==0) && (b3==0)){} |
christianjc_09 | 7:76ef20647568 | 115 | } |
christianjc_09 | 7:76ef20647568 | 116 | if ((b6==0) && (b4==0)) |
christianjc_09 | 7:76ef20647568 | 117 | { |
christianjc_09 | 7:76ef20647568 | 118 | keyboard.keyCode('v'); |
christianjc_09 | 7:76ef20647568 | 119 | while ((b6==0) && (b4==0)){} |
christianjc_09 | 7:76ef20647568 | 120 | } |
christianjc_09 | 7:76ef20647568 | 121 | if ((b6==0) && (b7==0)) |
christianjc_09 | 7:76ef20647568 | 122 | { |
christianjc_09 | 7:76ef20647568 | 123 | int count2 = 0; |
christianjc_09 | 7:76ef20647568 | 124 | while((b6==0)&&(b7==0)&&(count2 == 0)) |
christianjc_09 | 7:76ef20647568 | 125 | { |
christianjc_09 | 7:76ef20647568 | 126 | if((b6==0)&&(b7==0)&&(b8==0)) |
christianjc_09 | 7:76ef20647568 | 127 | {keyboard.keyCode('h'); |
christianjc_09 | 7:76ef20647568 | 128 | while ((b6==0)&&(b7==0)&&(b8==0)){} |
christianjc_09 | 7:76ef20647568 | 129 | count2++;} |
christianjc_09 | 7:76ef20647568 | 130 | } |
christianjc_09 | 7:76ef20647568 | 131 | wait(0.1); |
christianjc_09 | 7:76ef20647568 | 132 | if ((count2 == 0)) |
christianjc_09 | 7:76ef20647568 | 133 | { |
christianjc_09 | 7:76ef20647568 | 134 | keyboard.keyCode('b'); |
christianjc_09 | 7:76ef20647568 | 135 | } |
christianjc_09 | 7:76ef20647568 | 136 | } |
christianjc_09 | 7:76ef20647568 | 137 | if ((b6==0) && (b8==0)) |
christianjc_09 | 7:76ef20647568 | 138 | { |
christianjc_09 | 7:76ef20647568 | 139 | keyboard.keyCode('n'); |
christianjc_09 | 7:76ef20647568 | 140 | while ((b6==0) && (b8==0)){} |
christianjc_09 | 7:76ef20647568 | 141 | } |
christianjc_09 | 7:76ef20647568 | 142 | if ((b6==0) && (b9==0)) |
christianjc_09 | 7:76ef20647568 | 143 | { |
christianjc_09 | 7:76ef20647568 | 144 | keyboard.keyCode('m'); |
christianjc_09 | 7:76ef20647568 | 145 | while ((b6==0) && (b9==0)){} |
christianjc_09 | 7:76ef20647568 | 146 | } |
christianjc_09 | 7:76ef20647568 | 147 | if ((b6==0) && (b10==0)) |
christianjc_09 | 7:76ef20647568 | 148 | { |
christianjc_09 | 7:76ef20647568 | 149 | keyboard.keyCode('q'); |
christianjc_09 | 7:76ef20647568 | 150 | while ((b6==0) && (b10==0)){} |
christianjc_09 | 7:76ef20647568 | 151 | } |
christianjc_09 | 7:76ef20647568 | 152 | if ((b6==0) && (b5==0)) |
christianjc_09 | 7:76ef20647568 | 153 | { |
christianjc_09 | 7:76ef20647568 | 154 | keyboard.keyCode(' '); |
christianjc_09 | 7:76ef20647568 | 155 | while ((b5==0) && (b6==0)){} |
christianjc_09 | 7:76ef20647568 | 156 | } |
christianjc_09 | 7:76ef20647568 | 157 | |
christianjc_09 | 7:76ef20647568 | 158 | } |
christianjc_09 | 7:76ef20647568 | 159 | else if ((b5==0) && (b6==0)) //both thumb pressed |
christianjc_09 | 7:76ef20647568 | 160 | { |
christianjc_09 | 7:76ef20647568 | 161 | keyboard.keyCode(' '); |
christianjc_09 | 7:76ef20647568 | 162 | } |
christianjc_09 | 7:76ef20647568 | 163 | else //No thumb pressed |
christianjc_09 | 7:76ef20647568 | 164 | { |
christianjc_09 | 7:76ef20647568 | 165 | if(p_bus & 0x01) |
christianjc_09 | 7:76ef20647568 | 166 | { |
christianjc_09 | 7:76ef20647568 | 167 | keyboard.keyCode('a'); |
christianjc_09 | 7:76ef20647568 | 168 | while (p_bus & 0x01){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 169 | } |
christianjc_09 | 7:76ef20647568 | 170 | if(p_bus & 0x02) |
christianjc_09 | 7:76ef20647568 | 171 | { |
christianjc_09 | 7:76ef20647568 | 172 | keyboard.keyCode('s'); |
christianjc_09 | 7:76ef20647568 | 173 | while (p_bus & 0x02){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 174 | } |
christianjc_09 | 7:76ef20647568 | 175 | if(p_bus & 0x04) |
christianjc_09 | 7:76ef20647568 | 176 | { |
christianjc_09 | 7:76ef20647568 | 177 | keyboard.keyCode('d'); |
christianjc_09 | 7:76ef20647568 | 178 | while (p_bus & 0x04){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 179 | } |
christianjc_09 | 7:76ef20647568 | 180 | if(p_bus & 0x08) |
christianjc_09 | 7:76ef20647568 | 181 | { |
christianjc_09 | 7:76ef20647568 | 182 | keyboard.keyCode('f'); |
christianjc_09 | 7:76ef20647568 | 183 | while (p_bus & 0x08){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 184 | } |
christianjc_09 | 7:76ef20647568 | 185 | if(p_bus & 0x40) |
christianjc_09 | 7:76ef20647568 | 186 | { |
christianjc_09 | 7:76ef20647568 | 187 | keyboard.keyCode('j'); |
christianjc_09 | 7:76ef20647568 | 188 | while (p_bus & 0x40){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 189 | } |
christianjc_09 | 7:76ef20647568 | 190 | if(p_bus & 0x80) |
christianjc_09 | 7:76ef20647568 | 191 | { |
christianjc_09 | 7:76ef20647568 | 192 | keyboard.keyCode('k'); |
christianjc_09 | 7:76ef20647568 | 193 | while (p_bus & 0x80){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 194 | } |
christianjc_09 | 7:76ef20647568 | 195 | if(p_bus & 0x160) |
christianjc_09 | 7:76ef20647568 | 196 | { |
christianjc_09 | 7:76ef20647568 | 197 | keyboard.keyCode('l'); |
christianjc_09 | 7:76ef20647568 | 198 | while (p_bus & 0x160){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 199 | } |
christianjc_09 | 7:76ef20647568 | 200 | if(p_bus & 0x320) |
christianjc_09 | 7:76ef20647568 | 201 | { |
christianjc_09 | 7:76ef20647568 | 202 | keyboard.keyCode('p'); |
christianjc_09 | 7:76ef20647568 | 203 | while (p_bus & 0x320){p_bus = ~buttons.read();} |
christianjc_09 | 7:76ef20647568 | 204 | } |
christianjc_09 | 7:76ef20647568 | 205 | |
christianjc_09 | 7:76ef20647568 | 206 | } |
christianjc_09 | 7:76ef20647568 | 207 | wait(0.01); |
christianjc_09 | 7:76ef20647568 | 208 | } |
samux | 1:291a88a2c151 | 209 | } |
samux | 4:f0df6aae7147 | 210 | } |