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
|
board = teensylc
|
||||||
framework = arduino
|
framework = arduino
|
||||||
upload_protocol=teensy-cli
|
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
|
||||||
|
|
||||||
|
|
23
src/main.cpp
23
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};
|
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);
|
Keyboard.press(key);
|
||||||
|
delay(hold);
|
||||||
Keyboard.release(key);
|
Keyboard.release(key);
|
||||||
|
delay(wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
// put your setup code here, to run once:
|
// put your setup code here, to run once:
|
||||||
Keyboard.begin();
|
Keyboard.begin();
|
||||||
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
for(size_t i=0; i<_buttons_len; i++) {
|
for(size_t i=0; i<_buttons_len; i++) {
|
||||||
pinMode(_buttons[i], INPUT_PULLUP);
|
pinMode(_buttons[i], INPUT_PULLUP);
|
||||||
buttons[i].attach(_buttons[i]);
|
buttons[i].attach(_buttons[i]);
|
||||||
|
@ -34,12 +37,14 @@ void setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
long lastScan = 0;
|
long lastScan = 0;
|
||||||
|
long scanCount = 0;
|
||||||
void loop() {
|
void loop() {
|
||||||
long encoderSteps = encoder.read();
|
long encoderSteps = encoder.read();
|
||||||
long time = millis();
|
long time = millis();
|
||||||
long scanTime = time - lastScan;
|
long scanTime = time - lastScan;
|
||||||
|
|
||||||
if (scanTime > 50) {
|
if (scanTime > 50) {
|
||||||
|
scanCount++;
|
||||||
lastScan = time;
|
lastScan = time;
|
||||||
if (encoderSteps != 0) {
|
if (encoderSteps != 0) {
|
||||||
long step = encoderSteps < 0 ? 1 : -1; // step direction
|
long step = encoderSteps < 0 ? 1 : -1; // step direction
|
||||||
|
@ -60,13 +65,9 @@ void loop() {
|
||||||
case 6:
|
case 6:
|
||||||
case 5:
|
case 5:
|
||||||
case 0:
|
case 0:
|
||||||
key_press(KEY_SCROLL_LOCK);
|
key_press(KEY_SCROLL_LOCK, 75, 100);
|
||||||
delay(10);
|
key_press(KEY_SCROLL_LOCK, 75, 100);
|
||||||
key_press(KEY_SCROLL_LOCK);
|
|
||||||
delay(10);
|
|
||||||
key_press(keyMap[b]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -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