keyboard

Dependencies:   USBDevice mbed

Committer:
bruce_0205
Date:
Tue Nov 14 15:09:40 2017 +0000
Revision:
0:3309d940c502
hi

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bruce_0205 0:3309d940c502 1 #include "mbed.h"
bruce_0205 0:3309d940c502 2 #include "USBKeyboard.h"
bruce_0205 0:3309d940c502 3
bruce_0205 0:3309d940c502 4 //LED1: NUM_LOCK, LED2: CAPS_LOCK, LED3: SCROLL_LOCK
bruce_0205 0:3309d940c502 5 BusOut leds(LED1, LED2, LED3); //keyboard on/off set
bruce_0205 0:3309d940c502 6 DigitalIn start(PTC1); // Configure SW2 pin as input function is start
bruce_0205 0:3309d940c502 7 DigitalIn stop(PTB17); // Configure SW3 pin as input function is stop
bruce_0205 0:3309d940c502 8 USBKeyboard keyboard;
bruce_0205 0:3309d940c502 9
bruce_0205 0:3309d940c502 10 //user input key
bruce_0205 0:3309d940c502 11 #define user_button_key_1 'S'
bruce_0205 0:3309d940c502 12 #define user_button_key_2 'D'
bruce_0205 0:3309d940c502 13 #define user_button_key_3 'F'
bruce_0205 0:3309d940c502 14 #define user_button_key_4 'E'
bruce_0205 0:3309d940c502 15 #define user_button_key_5 'B'
bruce_0205 0:3309d940c502 16 #define user_button_key_6 'C'
bruce_0205 0:3309d940c502 17
bruce_0205 0:3309d940c502 18 //user input key delay time
bruce_0205 0:3309d940c502 19 #define user_button_delay_1 5
bruce_0205 0:3309d940c502 20 #define user_button_delay_2 3
bruce_0205 0:3309d940c502 21 #define user_button_delay_3 4
bruce_0205 0:3309d940c502 22 #define user_button_delay_4 2
bruce_0205 0:3309d940c502 23 #define user_button_delay_5 8
bruce_0205 0:3309d940c502 24 #define user_button_delay_6 3
bruce_0205 0:3309d940c502 25
bruce_0205 0:3309d940c502 26 char user_button_key[]={
bruce_0205 0:3309d940c502 27 user_button_key_1,
bruce_0205 0:3309d940c502 28 user_button_key_2,
bruce_0205 0:3309d940c502 29 user_button_key_3,
bruce_0205 0:3309d940c502 30 user_button_key_4,
bruce_0205 0:3309d940c502 31 user_button_key_5,
bruce_0205 0:3309d940c502 32 user_button_key_6
bruce_0205 0:3309d940c502 33 };
bruce_0205 0:3309d940c502 34
bruce_0205 0:3309d940c502 35 int user_button_delay[]={
bruce_0205 0:3309d940c502 36 user_button_delay_1,
bruce_0205 0:3309d940c502 37 user_button_delay_2,
bruce_0205 0:3309d940c502 38 user_button_delay_3,
bruce_0205 0:3309d940c502 39 user_button_delay_4,
bruce_0205 0:3309d940c502 40 user_button_delay_5,
bruce_0205 0:3309d940c502 41 user_button_delay_6
bruce_0205 0:3309d940c502 42 };
bruce_0205 0:3309d940c502 43
bruce_0205 0:3309d940c502 44 void user_button_content(char [],int []);
bruce_0205 0:3309d940c502 45
bruce_0205 0:3309d940c502 46 long int timer = 0;
bruce_0205 0:3309d940c502 47
bruce_0205 0:3309d940c502 48 int main() {
bruce_0205 0:3309d940c502 49
bruce_0205 0:3309d940c502 50 while (!keyboard.configured()) { // wait until keyboard is configured
bruce_0205 0:3309d940c502 51 }
bruce_0205 0:3309d940c502 52
bruce_0205 0:3309d940c502 53 while (1) {
bruce_0205 0:3309d940c502 54 leds = keyboard.lockStatus(); //open keyboard
bruce_0205 0:3309d940c502 55
bruce_0205 0:3309d940c502 56 if(start.read() == 0){ //wait SW2 button press
bruce_0205 0:3309d940c502 57 while(stop.read() != 0){ //wait SW3 button press
bruce_0205 0:3309d940c502 58 user_button_content(user_button_key,user_button_delay);
bruce_0205 0:3309d940c502 59 timer++;
bruce_0205 0:3309d940c502 60 for(double i=0;i<1;i=i+0.1){ //count 1 second time and wait SW3 button press
bruce_0205 0:3309d940c502 61 if(stop.read() == 0) break;
bruce_0205 0:3309d940c502 62 wait(0.1);
bruce_0205 0:3309d940c502 63 }
bruce_0205 0:3309d940c502 64 }
bruce_0205 0:3309d940c502 65 timer = 0;
bruce_0205 0:3309d940c502 66 }
bruce_0205 0:3309d940c502 67 }
bruce_0205 0:3309d940c502 68 }
bruce_0205 0:3309d940c502 69
bruce_0205 0:3309d940c502 70 void user_button_content(char key[],int delay[]){
bruce_0205 0:3309d940c502 71 for(int i=0;i<strlen(key);i++){
bruce_0205 0:3309d940c502 72 if((timer%delay[i]) == 0)
bruce_0205 0:3309d940c502 73 keyboard._putc(key[i]);
bruce_0205 0:3309d940c502 74 }
bruce_0205 0:3309d940c502 75 }