Add delays for better reliability, also go keyboard only to properly work with the KVM
This commit is contained in:
parent
cfdb9fc913
commit
ab6ad9ba9f
2 changed files with 16 additions and 9 deletions
|
@ -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
|
||||
|
||||
|
|
21
src/main.cpp
21
src/main.cpp
|
@ -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,12 +65,8 @@ 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:
|
||||
|
@ -80,4 +81,10 @@ void loop() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (scanCount & 16) {
|
||||
digitalWrite(LED_BUILTIN, HIGH);
|
||||
} else {
|
||||
digitalWrite(LED_BUILTIN, LOW);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue