mirror of
https://github.com/clockworkpi/DevTerm.git
synced 2026-03-19 10:22:44 +01:00
update keyboard code,followed updates from foriequal0
This commit is contained in:
@@ -23,7 +23,7 @@ enum Axis: uint8_t {
|
||||
AXIS_Y,
|
||||
AXIS_NUM,
|
||||
};
|
||||
|
||||
static TrackballMode lastMode;
|
||||
static int8_t distances[AXIS_NUM];
|
||||
static RateMeter rateMeter[AXIS_NUM];
|
||||
static Glider glider[AXIS_NUM];
|
||||
@@ -51,20 +51,30 @@ static void interrupt() {
|
||||
const auto vy = ry * ratio;
|
||||
|
||||
if (AXIS == AXIS_X) {
|
||||
glider[AXIS_X].update(vx, rateMeter[AXIS_X].delta());
|
||||
glider[AXIS_X].update(vx, std::sqrt(rateMeter[AXIS_X].delta()));
|
||||
glider[AXIS_Y].updateSpeed(vy);
|
||||
} else {
|
||||
glider[AXIS_X].updateSpeed(vx);
|
||||
glider[AXIS_Y].update(vy, rateMeter[AXIS_Y].delta());
|
||||
glider[AXIS_Y].update(vy, std::sqrt(rateMeter[AXIS_Y].delta()));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void trackball_task(DEVTERM*dv) {
|
||||
int8_t x = 0, y = 0, w = 0;
|
||||
noInterrupts();
|
||||
rateMeter[AXIS_X].tick(dv->delta);
|
||||
rateMeter[AXIS_Y].tick(dv->delta);
|
||||
const auto mode = dv->state->moveTrackball();
|
||||
if (lastMode != mode) {
|
||||
rateMeter[AXIS_X].expire();
|
||||
rateMeter[AXIS_Y].expire();
|
||||
wheelBuffer = 0;
|
||||
}
|
||||
else {
|
||||
rateMeter[AXIS_X].tick(dv->delta);
|
||||
rateMeter[AXIS_Y].tick(dv->delta);
|
||||
}
|
||||
lastMode = mode;
|
||||
|
||||
switch(mode){
|
||||
case TrackballMode::Mouse: {
|
||||
const auto rX = glider[AXIS_X].glide(dv->delta);
|
||||
|
||||
Reference in New Issue
Block a user