mirror of
https://github.com/clockworkpi/uConsole.git
synced 2025-12-12 18:18:50 +01:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
0fbaffa5db
@ -25,6 +25,7 @@ typedef struct keyboard_state{
|
|||||||
uint8_t layer;
|
uint8_t layer;
|
||||||
uint8_t prev_layer;
|
uint8_t prev_layer;
|
||||||
uint8_t fn_on;
|
uint8_t fn_on;
|
||||||
|
uint8_t select_on;
|
||||||
uint16_t sf_on;//shift on
|
uint16_t sf_on;//shift on
|
||||||
|
|
||||||
uint8_t backlight;//0 1 2 3
|
uint8_t backlight;//0 1 2 3
|
||||||
|
|||||||
@ -206,14 +206,18 @@ void keyboard_action(DEVTERM*dv, uint8_t row, uint8_t col, uint8_t mode) {
|
|||||||
k = ' ';
|
k = ' ';
|
||||||
if (mode == KEY_PRESSED) {
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Keyboard->press(k);
|
dv->Keyboard->press(k);
|
||||||
|
dv->Keyboard_state.select_on = 1;
|
||||||
} else if (mode == KEY_RELEASED) {
|
} else if (mode == KEY_RELEASED) {
|
||||||
keyboard_release(dv, addr, k);
|
keyboard_release(dv, addr, k);
|
||||||
|
dv->Keyboard_state.select_on = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mode == KEY_PRESSED) {
|
if (mode == KEY_PRESSED) {
|
||||||
dv->Joystick->button(9, mode);
|
dv->Joystick->button(9, mode);
|
||||||
|
dv->Keyboard_state.select_on = 1;
|
||||||
} else {
|
} else {
|
||||||
keyboard_release(dv, addr, k);
|
keyboard_release(dv, addr, k);
|
||||||
|
dv->Keyboard_state.select_on = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -24,6 +24,7 @@ enum Axis: uint8_t {
|
|||||||
AXIS_NUM,
|
AXIS_NUM,
|
||||||
};
|
};
|
||||||
static TrackballMode lastMode;
|
static TrackballMode lastMode;
|
||||||
|
static bool asWheel = false;
|
||||||
static int8_t distances[AXIS_NUM];
|
static int8_t distances[AXIS_NUM];
|
||||||
static RateMeter rateMeter[AXIS_NUM];
|
static RateMeter rateMeter[AXIS_NUM];
|
||||||
static Glider glider[AXIS_NUM];
|
static Glider glider[AXIS_NUM];
|
||||||
@ -39,6 +40,9 @@ static float rateToVelocityCurve(float input) {
|
|||||||
template<Axis AXIS, int8_t Direction >
|
template<Axis AXIS, int8_t Direction >
|
||||||
static void interrupt( ) {
|
static void interrupt( ) {
|
||||||
distances[AXIS] += Direction;
|
distances[AXIS] += Direction;
|
||||||
|
if (asWheel) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
rateMeter[AXIS].onInterrupt();
|
rateMeter[AXIS].onInterrupt();
|
||||||
glider[AXIS].setDirection(Direction);
|
glider[AXIS].setDirection(Direction);
|
||||||
|
|
||||||
@ -69,7 +73,9 @@ void trackball_task(DEVTERM*dv) {
|
|||||||
noInterrupts();
|
noInterrupts();
|
||||||
//const auto mode = dv->state->moveTrackball();
|
//const auto mode = dv->state->moveTrackball();
|
||||||
//https://forum.clockworkpi.com/t/uconsole-trackball-as-scrolling-wheel-temporary-solution/11032/3
|
//https://forum.clockworkpi.com/t/uconsole-trackball-as-scrolling-wheel-temporary-solution/11032/3
|
||||||
const auto mode = dv->Keyboard_state.fn_on == 0 ? TrackballMode::Mouse : TrackballMode::Wheel;
|
//const auto mode = dv->Keyboard_state.fn_on == 0 ? TrackballMode::Mouse : TrackballMode::Wheel;
|
||||||
|
asWheel = dv->Keyboard_state.select_on == 1;
|
||||||
|
const auto mode = asWheel ? TrackballMode::Wheel : TrackballMode::Mouse;
|
||||||
if (lastMode != mode) {
|
if (lastMode != mode) {
|
||||||
rateMeter[AXIS_X].expire();
|
rateMeter[AXIS_X].expire();
|
||||||
rateMeter[AXIS_Y].expire();
|
rateMeter[AXIS_Y].expire();
|
||||||
|
|||||||
@ -41,6 +41,7 @@ void setup() {
|
|||||||
dev_term.Keyboard_state.layer = 0;
|
dev_term.Keyboard_state.layer = 0;
|
||||||
dev_term.Keyboard_state.prev_layer = 0;
|
dev_term.Keyboard_state.prev_layer = 0;
|
||||||
dev_term.Keyboard_state.fn_on = 0;
|
dev_term.Keyboard_state.fn_on = 0;
|
||||||
|
dev_term.Keyboard_state.select_on = 0;
|
||||||
dev_term.Keyboard_state.sf_on = 0;
|
dev_term.Keyboard_state.sf_on = 0;
|
||||||
|
|
||||||
//dev_term.Keyboard_state.shift = 0;
|
//dev_term.Keyboard_state.shift = 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user