Browse Source

Merge WIP: reading keys works

master
Dejvino 1 year ago
parent
commit
2bc8080e67
1 changed files with 15 additions and 14 deletions
  1. +15
    -14
      terminal_keyboard_emulator.ino

+ 15
- 14
terminal_keyboard_emulator.ino View File

@@ -5,16 +5,15 @@
#include <TimerOne.h>

// 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;
}


Loading…
Cancel
Save