diff --git a/PS2Keyboard.cpp b/mac_plus_ps2/PS2Keyboard.cpp similarity index 100% rename from PS2Keyboard.cpp rename to mac_plus_ps2/PS2Keyboard.cpp diff --git a/PS2Keyboard.h b/mac_plus_ps2/PS2Keyboard.h similarity index 100% rename from PS2Keyboard.h rename to mac_plus_ps2/PS2Keyboard.h diff --git a/scancodes.ino b/mac_plus_ps2/keymap.ino similarity index 99% rename from scancodes.ino rename to mac_plus_ps2/keymap.ino index 4dc9540..74533c4 100644 --- a/scancodes.ino +++ b/mac_plus_ps2/keymap.ino @@ -1,5 +1,5 @@ void initScancodes() { - for (byte i = 0; i < 256; i++) { + for (int i = 0; i < 256; i++) { scanCodesTable[i] = NULL_TRANSITION; extScanCodesTable[i] = NULL_TRANSITION; } diff --git a/macplus-keyboard.ino b/mac_plus_ps2/mac_plus_ps2.ino similarity index 90% rename from macplus-keyboard.ino rename to mac_plus_ps2/mac_plus_ps2.ino index 6014e5a..05f00bc 100644 --- a/macplus-keyboard.ino +++ b/mac_plus_ps2/mac_plus_ps2.ino @@ -14,18 +14,29 @@ byte extScanCodesTable[256]; void setup() { initScancodes(); - + keyboard.begin(PS2_DATA_PIN, PS2_CLOCK_PIN); - + pinMode(LED_BUILTIN, OUTPUT); pinMode(MAC_CLOCK_PIN, OUTPUT); pinMode(MAC_DATA_PIN, INPUT_PULLUP); - - while (digitalRead(MAC_DATA_PIN) != LOW); + waitForInitSignal(); delayMicroseconds(180); } +void waitForInitSignal() { + unsigned long t = millis(); + boolean led = false; + while (digitalRead(MAC_CLOCK_PIN) != LOW) { + if (millis() - t > 100) { + t = millis(); + led = !led; + digitalWrite(LED_BUILTIN, led); + } + } +} + void loop() { digitalWrite(LED_BUILTIN, LOW); byte cmd = readByte(); @@ -73,7 +84,7 @@ byte readByte() { b = (b << 1) | digitalRead(MAC_DATA_PIN); delayMicroseconds(180); } - + return b; } diff --git a/utility/int_pins.h b/mac_plus_ps2/utility/int_pins.h similarity index 100% rename from utility/int_pins.h rename to mac_plus_ps2/utility/int_pins.h