diff --git a/terminal_keyboard_emulator.ino b/terminal_keyboard_emulator.ino index 5d8cf7d..29f6671 100644 --- a/terminal_keyboard_emulator.ino +++ b/terminal_keyboard_emulator.ino @@ -5,16 +5,15 @@ #include // pinout config -const int pinData = 6; -const int pinStatus = 7; -const int clockPin = 5; -const int dataPin = 3; -const int outPin = 4; -const int speakerPin = 6; +const int pinData = 6; // out, host data +const int pinStatus = 7; // in, host status +const int clockPin = 5; // out, kbd clock +const int dataPin = 3; // in, kbd data +const int outPin = 4; // out, kbd led // constant config -const int slaveClockDivider = 16; -const int timerDelay = 530 / slaveClockDivider; +const int slaveClockDivider = 4; +const int timerDelay = 528 / slaveClockDivider; // variables volatile int slaveClockStep = 0; @@ -27,8 +26,6 @@ int numbits = 10; // MODS >>> // [1] send debug scancode information to serial port bool modConsoleLog = true; -// [2] play speaker sounds of keys -bool modKeySounds = true; // <<< MODS // ---------- @@ -48,6 +45,7 @@ volatile byte nextKey = 0; void typeKey(byte key) { nextKey = key; nextKeyReady = true; + Serial.print("Typing key "); Serial.println((int) key); } void sendKey(byte key) { @@ -56,6 +54,7 @@ void sendKey(byte key) { dataDelay = 0; packetDelay = 0; packetTail = 15; + Serial.print("Sending key "); Serial.println((int) key); //Timer1.initialize(timerDelay); //Timer1.start(); } @@ -64,8 +63,10 @@ void onHostStatusChange() { long timeNow = millis(); long changeDiff = timeNow - lastChange; lastChange = timeNow; + digitalWrite(pinData, digitalRead(pinStatus)); if (changeDiff >= 10 && nextKeyReady) { nextKeyReady = false; + Serial.println("Status change with key"); sendKey(nextKey); } } @@ -148,7 +149,7 @@ char translateKeyToChar(int key) { if (sizeof(m) <= key) { return 0; } - return m[key]; + return key; //m[key]; } void printChar(char keyChar) { @@ -167,7 +168,9 @@ void processKbdByte(int data) { delay(10); Keyboard.release(keyChar); #endif - + + typeKey(keyChar); + if (modConsoleLog) { Serial.print("Press: "); printChar(keyChar); @@ -212,7 +215,6 @@ void setup(void) //Timer1.stop(); Serial.println("Keyboard ready"); - tone(speakerPin, 80, 50); } void loop(void) @@ -227,7 +229,6 @@ void loop(void) // type key from keyboard if (counter >= numbits) { processKbdByte(data); - if (modKeySounds) tone(speakerPin, 60 + int(data), 25); data = B0; counter = 0; }