Может ли библиотека мыши прокручиваться по горизонтали?
Я использую библиотеку Mouse с ATmega32U4, подключенным к Linux через USB.
Я хотел бы использовать команды горизонтальной прокрутки, но функция Mouse.move(), похоже, принимает только Параметры перемещения по оси X, перемещения по оси Y и вертикальной прокрутки.
Как я могу отправить команды горизонтальной прокрутки с Arduino на компьютер?
@Ian Mackinnon, 👍1
Обсуждение2 ответа
Как было предложено в комментариях, я отредактировал основные библиотеки для достижения этой цели.
Я использую PlatformIO, поэтому файлы библиотеки, которые мне нужно было отредактировать, находились здесь:
~/.platformio/packages/framework-arduinoavr/libraries/Mouse/src/
И необходимые изменения (для изменения параметра wheel
для параметров горизонтальной (h
) и вертикальной (v
) прокрутки были следующими:
Mouse.h
Измените объявление move()
:
...
void move(signed char x, signed char y, signed char h = 0, signed char v = 0);
...
Mouse.cpp
Add the following to the report descriptor after the last INPUT
message:
...
0x05, 0x0c, // USAGE PAGE (Consumer Devices)
0x0a, 0x38, 0x02, // USAGE (AC Pan)
0x15, 0x81, // LOGICAL_MINIMUM (-127)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x06, // INPUT (Data, Var, Rel)
...
Change the definition of move()
:
void Mouse_::move(signed char x, signed char y, signed char h, signed char v)
{
uint8_t m[5];
m[0] = _buttons;
m[1] = x;
m[2] = y;
m[3] = v;
m[4] = h;
HID().SendReport(1, m, 5);
}
The following terminal commands were also useful in testing these changes:
# List input devices
xinput --list
# List device capabilities
xinput --list <device-id>
# Watch for data sent from the device
watch -n 0.1 xinput query-state <device-id>
В библиотеке NicoHood/HID https://github.com/NicoHood/HID есть много для клавиатур (медиа-клавиши и так далее), но не все для мышей. Я не знаю, есть ли там горизонтальная прокрутка., @Jot
Горизонтальная прокрутка достигается удерживанием Shift при прокрутке по вертикали.
Сделайте это вместо этого:
Keyboard.press(KEY_LEFT_SHIFT);
Mouse.move(0, 0, 1);
Keyboard.releaseAll();
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Как подключить Arduino Nano к ноутбуку с Linux
- Ни ttyACM0, ни ttyUSB0
- Keyboard.print() пропускает клавиши
- Не удается подключиться через /dev/ttyACM0 (Ubuntu 18.04)
- Восстановление после потери USB-подключения (от Leonardo к Raspberry Pi)
- Arduino Uno R3 не распознается Arduino IDE в Ubuntu 21.04
- В Linux Min21 невозможно получить доступ к инструментам/порту (выделено серым цветом)
Вам нужно переписать ядро, чтобы обеспечить кнопки 6 и 7., @Ignacio Vazquez-Abrams
Вы можете комбинировать его с клавиатурой, чтобы использовать клавиши Ctrl и Shift для других параметров прокрутки., @Majenko