Add delays for better reliability, also go keyboard only to properly work with the KVM

This commit is contained in:
Ryan Voots 2019-12-09 12:33:33 -08:00
parent cfdb9fc913
commit ab6ad9ba9f
2 changed files with 16 additions and 9 deletions

View file

@ -13,5 +13,5 @@ platform = teensy
board = teensylc
framework = arduino
upload_protocol=teensy-cli
build_flags=-D USB_SERIAL_HID -D TEENSY_OPT_SMALLEST_CODE_LTO
build_flags=-D USB_KEYBOARDONLY -D TEENSY_OPT_SMALLEST_CODE_LTO

View file

@ -11,14 +11,17 @@ Encoder encoder(_encoder[0], _encoder[1]);
uint16_t keyMap[] = {KEY_4, KEY_MEDIA_MUTE, KEY_MEDIA_NEXT_TRACK, KEY_MEDIA_PLAY_PAUSE, KEY_MEDIA_PREV_TRACK, KEY_3, KEY_2, KEY_1};
void inline key_press(uint16_t key) {
void inline key_press(uint16_t key, uint32_t hold=30, uint32_t wait=15) {
Keyboard.press(key);
delay(hold);
Keyboard.release(key);
delay(wait);
}
void setup() {
// put your setup code here, to run once:
Keyboard.begin();
pinMode(LED_BUILTIN, OUTPUT);
for(size_t i=0; i<_buttons_len; i++) {
pinMode(_buttons[i], INPUT_PULLUP);
buttons[i].attach(_buttons[i]);
@ -34,12 +37,14 @@ void setup() {
}
long lastScan = 0;
long scanCount = 0;
void loop() {
long encoderSteps = encoder.read();
long time = millis();
long scanTime = time - lastScan;
if (scanTime > 50) {
scanCount++;
lastScan = time;
if (encoderSteps != 0) {
long step = encoderSteps < 0 ? 1 : -1; // step direction
@ -60,13 +65,9 @@ void loop() {
case 6:
case 5:
case 0:
key_press(KEY_SCROLL_LOCK);
delay(10);
key_press(KEY_SCROLL_LOCK);
delay(10);
key_press(keyMap[b]);
break;
key_press(KEY_SCROLL_LOCK, 75, 100);
key_press(KEY_SCROLL_LOCK, 75, 100);
case 1:
case 2:
case 3:
@ -80,4 +81,10 @@ void loop() {
}
}
}
if (scanCount & 16) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
}