5 buttons for each hand - chorded keyboard

Dependencies:   PinDetect USBDevice mbed

Fork of USBKeyboard_HelloWorld by Samuel Mokrani

Committer:
saurabhmitra
Date:
Sun Sep 13 09:03:16 2015 +0000
Revision:
7:05d567c0f879
Parent:
5:03a4211d593a
HW 2 finished

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"
saurabhmitra 7:05d567c0f879 3 // #include "DigitalIn.h"
saurabhmitra 7:05d567c0f879 4
saurabhmitra 7:05d567c0f879 5 #define NUM_WAIT 80
saurabhmitra 7:05d567c0f879 6 #define DELAY 2
saurabhmitra 7:05d567c0f879 7
saurabhmitra 7:05d567c0f879 8 BusOut leds( LED1, LED2, LED3, LED4 );
saurabhmitra 7:05d567c0f879 9 BusIn pins(D3,D4,D5,D6,D7,D8,D9,D10,D11,D12);
saurabhmitra 7:05d567c0f879 10
samux 3:8b56768ceca2 11 //USBKeyboard
samux 3:8b56768ceca2 12 USBKeyboard keyboard;
saurabhmitra 7:05d567c0f879 13
samux 1:291a88a2c151 14 int main(void) {
saurabhmitra 7:05d567c0f879 15 leds = 255;
saurabhmitra 7:05d567c0f879 16 int old_pins = 0;
saurabhmitra 7:05d567c0f879 17 char count = 0;
samux 1:291a88a2c151 18 while (1) {
saurabhmitra 7:05d567c0f879 19 if (old_pins == pins.read()) {
saurabhmitra 7:05d567c0f879 20 // keyboard.printf("Count: %d\r\n", count);
saurabhmitra 7:05d567c0f879 21 count++;
saurabhmitra 7:05d567c0f879 22 } else {
saurabhmitra 7:05d567c0f879 23 count = 0;
saurabhmitra 7:05d567c0f879 24 }
saurabhmitra 7:05d567c0f879 25 old_pins = pins.read();
saurabhmitra 7:05d567c0f879 26 if (count >= NUM_WAIT) {
saurabhmitra 7:05d567c0f879 27 // keyboard.printf("%d\r\n", ~(pins.read()));
saurabhmitra 7:05d567c0f879 28 old_pins = 0x3ff & (~old_pins); // make sure all other bits are 0 (after the 10 lowest order)
saurabhmitra 7:05d567c0f879 29 switch(old_pins) {
saurabhmitra 7:05d567c0f879 30 case 0x000: break;
saurabhmitra 7:05d567c0f879 31 // Vowels on left hand - one per finger
saurabhmitra 7:05d567c0f879 32 case 0x001: keyboard.printf("a");break;
saurabhmitra 7:05d567c0f879 33 case 0x002: keyboard.printf("e");break;
saurabhmitra 7:05d567c0f879 34 case 0x004: keyboard.printf("i");break;
saurabhmitra 7:05d567c0f879 35 case 0x008: keyboard.printf("o");break;
saurabhmitra 7:05d567c0f879 36 case 0x010: keyboard.printf("u");break;
saurabhmitra 7:05d567c0f879 37
saurabhmitra 7:05d567c0f879 38 // Consonants on right hand, different combos
saurabhmitra 7:05d567c0f879 39 case 0x020: keyboard.printf("t");break;
saurabhmitra 7:05d567c0f879 40 case 0x040: keyboard.printf("n");break;
saurabhmitra 7:05d567c0f879 41 case 0x080: keyboard.printf("s");break;
saurabhmitra 7:05d567c0f879 42 case 0x100: keyboard.printf("h");break;
saurabhmitra 7:05d567c0f879 43 case 0x200: keyboard.printf("r");break;
saurabhmitra 7:05d567c0f879 44 case 0x060: keyboard.printf("d");break;
saurabhmitra 7:05d567c0f879 45 case 0x0A0: keyboard.printf("l");break;
saurabhmitra 7:05d567c0f879 46 case 0x120: keyboard.printf("c");break;
saurabhmitra 7:05d567c0f879 47 case 0x220: keyboard.printf("m");break;
saurabhmitra 7:05d567c0f879 48 case 0x0C0: keyboard.printf("w");break;
saurabhmitra 7:05d567c0f879 49 case 0x140: keyboard.printf("f");break;
saurabhmitra 7:05d567c0f879 50 case 0x240: keyboard.printf("g");break;
saurabhmitra 7:05d567c0f879 51 case 0x180: keyboard.printf("y");break;
saurabhmitra 7:05d567c0f879 52 case 0x280: keyboard.printf("p");break;
saurabhmitra 7:05d567c0f879 53 case 0x300: keyboard.printf("b");break;
saurabhmitra 7:05d567c0f879 54 case 0x0E0: keyboard.printf("v");break;
saurabhmitra 7:05d567c0f879 55 case 0x160: keyboard.printf("k");break;
saurabhmitra 7:05d567c0f879 56 case 0x260: keyboard.printf("j");break;
saurabhmitra 7:05d567c0f879 57 case 0x1a0: keyboard.printf("x");break;
saurabhmitra 7:05d567c0f879 58 case 0x2a0: keyboard.printf("q");break;
saurabhmitra 7:05d567c0f879 59 case 0x320: keyboard.printf("z");break;
saurabhmitra 7:05d567c0f879 60
saurabhmitra 7:05d567c0f879 61 // Special Keys
saurabhmitra 7:05d567c0f879 62 case 0x003: keyboard.printf("\r\n");break;
saurabhmitra 7:05d567c0f879 63 case 0x005: keyboard.printf(" ");break;
saurabhmitra 7:05d567c0f879 64 case 0x009: keyboard.keyCode(KEY_CAPS_LOCK);break;
saurabhmitra 7:05d567c0f879 65 case 0x011: keyboard.printf("\b");break;
saurabhmitra 7:05d567c0f879 66
saurabhmitra 7:05d567c0f879 67 default:
saurabhmitra 7:05d567c0f879 68 break;
saurabhmitra 7:05d567c0f879 69 }
saurabhmitra 7:05d567c0f879 70 }
saurabhmitra 7:05d567c0f879 71 wait_ms(DELAY);
samux 1:291a88a2c151 72 }
samux 4:f0df6aae7147 73 }