You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While attempting to use an Arduino Micro with the JoystickLibrary on JOYSTICK_TYPE_MULTI_AXIS mode, the computer immediately locks its mouse pointer to the Arduino's signal. Joystick still operates as a joystick in parallel with the mouse actions.
I've tried the other modes (JOYSTICK_TYPE_(...)) and they don't hijack the mouse pointer.
I plan to use multiple axis to read a flight sim chair (flight controls, throttle, breaks, mixture and prop pitch control) so, not sure if the other modes are capable, apart from having a dead zone, undesirable for my purpose.
Technical Details
Arduino Board: Arduino Micro
Host OS: Linux (debian 11.5)
Arduino IDE Version: 1.8.13
Sketch File that Reproduces Issue
#include "Joystick.h"
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_MULTI_AXIS, 32, 0,
true, true, false, false, false, false,
true, true, true, true, false);
/* Switch connections to Arduino */
const int sw_col[] = {2, 3, 4, 5, 6};
const int sw_row[] = {7, 11, 12, 13};
/* Analog controls' connections to Arduino */
const int analog[] = {A0, A8, A9, A1, A2, A3, A4, A5};
/* Switch readings: 1 array value per row */
int switches[4];
int ax_reading[8];
int ax_cal_lo[8] = {0, 408, 409, 400, 0, 0, 0, 0};
int ax_cal_hi[8] = {1023, 495, 485, 500, 1023, 1023, 1023, 1023};
void read_switches() {
// sw_col pins are set up as INPUT_PULLUPs at setup() time.
for (int row = 0; row < 4; row++) {
pinMode(sw_row[row], OUTPUT);
digitalWrite(sw_row[row], LOW);
for (int col = 0; col < 5; col++) {
int state = digitalRead(sw_col[col]);
bitWrite(switches[row], col, !state);
if (state) Joystick.releaseButton(5*row+col);
else Joystick.pressButton(5*row+col);
}
pinMode(sw_row[row], INPUT_PULLUP);
}
}
void calibrate() {
// DISREGARD - NOT YET USED
while (bitRead(switches[0], 0));
while (!bitRead(switches[0], 0));
}
void setup() {
// Configure inputs
for (int col = 0; col < 5; col++) pinMode(sw_col[col], INPUT_PULLUP);
for (int ax = 0; ax < 8; ax++) pinMode(analog[ax], INPUT);
// begin in FALSE - autoSendState = OFF. state of joystick sent via Joystick.sendState() at
// the end of the loop.
Joystick.begin(false);
// Detect if a calibration has been requested
read_switches();
if (bitRead(switches[0], 0) == 1) calibrate();
}
void loop() {
for (int ax = 0; ax < 8; ax++)
ax_reading[ax] = analogRead(analog[ax]);
read_switches();
Joystick.setYAxis(map(ax_reading[1], ax_cal_lo[1], ax_cal_hi[1], -127, 127));
Joystick.setXAxis(map(ax_reading[2], ax_cal_lo[2], ax_cal_hi[2], -127, 127));
Joystick.setThrottle(map(ax_reading[3], ax_cal_lo[3], ax_cal_hi[3], 0, 255));
Joystick.sendState();
}
Additional context
I've read somewhere that there's an xorg-joystick driver intended to read a joystick as a mouse pointer and, being similar to my issue I've double-checked, and said driver is not installed on my xorg.
Thanks for your help.
The text was updated successfully, but these errors were encountered:
Description of Issue
While attempting to use an Arduino Micro with the JoystickLibrary on JOYSTICK_TYPE_MULTI_AXIS mode, the computer immediately locks its mouse pointer to the Arduino's signal. Joystick still operates as a joystick in parallel with the mouse actions.
I've tried the other modes (JOYSTICK_TYPE_(...)) and they don't hijack the mouse pointer.
I plan to use multiple axis to read a flight sim chair (flight controls, throttle, breaks, mixture and prop pitch control) so, not sure if the other modes are capable, apart from having a dead zone, undesirable for my purpose.
Technical Details
Sketch File that Reproduces Issue
Additional context
I've read somewhere that there's an xorg-joystick driver intended to read a joystick as a mouse pointer and, being similar to my issue I've double-checked, and said driver is not installed on my xorg.
Thanks for your help.
The text was updated successfully, but these errors were encountered: