Add the ability to use a custom delay time for button presses.
This commit is contained in:
parent
70d7bdd3b2
commit
aef35f96a0
5 changed files with 23 additions and 17 deletions
18
Button.cpp
18
Button.cpp
|
@ -48,7 +48,8 @@ bool LatchedButton::Update(Joystick* js) {
|
|||
}
|
||||
|
||||
|
||||
PulsedButton::PulsedButton(uint8_t vbutton, Reader* reader, bool double_action, bool split) : Button(vbutton, reader) {
|
||||
PulsedButton::PulsedButton(uint8_t vbutton, Reader* reader, uint8_t release_delay, bool double_action, bool split) : Button(vbutton, reader) {
|
||||
this->release_delay = release_delay;
|
||||
this->release_time1 = 0;
|
||||
this->release_time2 = 0;
|
||||
if (double_action) {
|
||||
|
@ -80,21 +81,21 @@ bool PulsedButton::Update(Joystick* js) {
|
|||
case BUTTON_PULSED:
|
||||
if (reader->On()) {
|
||||
js->PressButton(vbutton);
|
||||
release_time1 = millis() + 250;
|
||||
release_time1 = millis() + release_delay;
|
||||
}
|
||||
break;
|
||||
case BUTTON_PULSED_DOUBLE_ACTION:
|
||||
js->PressButton(vbutton);
|
||||
release_time1 = millis() + 250;
|
||||
release_time1 = millis() + release_delay;
|
||||
break;
|
||||
case BUTTON_PULSED_DOUBLE_ACTION_SPLIT:
|
||||
if (reader->On()) {
|
||||
js->PressButton(vbutton);
|
||||
release_time1 = millis() + 250;
|
||||
release_time1 = millis() + release_delay;
|
||||
}
|
||||
else {
|
||||
js->PressButton(vbutton2);
|
||||
release_time2 = millis() + 250;
|
||||
release_time2 = millis() + release_delay;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -103,11 +104,12 @@ bool PulsedButton::Update(Joystick* js) {
|
|||
}
|
||||
|
||||
|
||||
EncoderButton::EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton, int8_t tick_threshold) : Button(vbutton, NULL) {
|
||||
EncoderButton::EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton, int8_t tick_threshold, uint8_t release_delay) : Button(vbutton, NULL) {
|
||||
this->type = ENCODER_PULSED_SPLIT;
|
||||
this->vbutton2 = vbutton + 1;
|
||||
this->encoder = new Encoder(pin1, pin2);
|
||||
this->last_value = encoder->read();
|
||||
this->release_delay = release_delay;
|
||||
this->release_time1 = 0;
|
||||
this->release_time2 = 0;
|
||||
this->ticks = 0;
|
||||
|
@ -135,13 +137,13 @@ bool EncoderButton::Update(Joystick* js) {
|
|||
if (ticks >= tick_threshold) {
|
||||
js->PressButton(vbutton);
|
||||
changed = true;
|
||||
release_time1 = millis() + 250;
|
||||
release_time1 = millis() + release_delay;
|
||||
ticks = 0;
|
||||
}
|
||||
else if (ticks <= tick_threshold * -1) {
|
||||
js->PressButton(vbutton2);
|
||||
changed = true;
|
||||
release_time2 = millis() + 250;
|
||||
release_time2 = millis() + release_delay;
|
||||
ticks = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue