2021-09-18

vak: (Default)
Нынче почти каждый день приходится общаться с коллегами через Zoom. Два самых востребованных действия: включить-выключить микрофон и видеокамеру. Можно мышкой или через клавиатуру, но есть удобный внешний девайс для такого управления: Macropad2.



Кнопки можно перепрограммировать, заменив прошивку. Хардвер совместим с известным открытым софтом для программируемых клавиатур: https://github.com/qmk/qmk_firmware/

Описание Macropad2: https://github.com/AnaviTechnology/anavi-docs/blob/master/anavi-macro-pad-2/anavi-macro-pad-2-datasheet.md

Изначально девайс запрограммирован выдавать буквы 'a' и 'b'. Перепрошивка для Zoom делается так:
python3 -m pip install qmk
git clone https://github.com/micronucleus/micronucleus.git
sudo make -C micronucleus/commandline/ install
git clone https://github.com/qmk/qmk_firmware.git
cd qmk_firmware
git checkout 0.13.19
make git-submodule
make anavi/macropad2:zoom:flash
Результат:
$ make anavi/macropad2:zoom:flash
QMK Firmware 0.13.19
Making anavi/macropad2 with keymap zoom and target flash

avr-gcc (Homebrew AVR GCC 9.3.0_3) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling: keyboards/anavi/macropad2/macropad2.c                                                    [OK]
Compiling: keyboards/anavi/macropad2/keymaps/zoom/keymap.c                                          [OK]
Compiling: quantum/quantum.c                                                                        [OK]
Compiling: quantum/send_string.c                                                                    [OK]
Compiling: quantum/bitwise.c                                                                        [OK]
Compiling: quantum/led.c                                                                            [OK]
Compiling: quantum/keymap_common.c                                                                  [OK]
Compiling: quantum/keycode_config.c                                                                 [OK]
Compiling: quantum/bootmagic/magic.c                                                                [OK]
Compiling: quantum/matrix_common.c                                                                  [OK]
Compiling: quantum/matrix.c                                                                         [OK]
Compiling: quantum/debounce/sym_defer_g.c                                                           [OK]
Compiling: quantum/backlight/backlight.c                                                            [OK]
Compiling: quantum/process_keycode/process_backlight.c                                              [OK]
Compiling: quantum/backlight/backlight_driver_common.c                                              [OK]
Compiling: quantum/backlight/backlight_software.c                                                   [OK]
Compiling: quantum/process_keycode/process_combo.c                                                  [OK]
Compiling: tmk_core/common/host.c                                                                   [OK]
Compiling: tmk_core/common/keyboard.c                                                               [OK]
Compiling: tmk_core/common/action.c                                                                 [OK]
Compiling: tmk_core/common/action_tapping.c                                                         [OK]
Compiling: tmk_core/common/action_macro.c                                                           [OK]
Compiling: tmk_core/common/action_layer.c                                                           [OK]
Compiling: tmk_core/common/action_util.c                                                            [OK]
Compiling: tmk_core/common/debug.c                                                                  [OK]
Compiling: tmk_core/common/sendchar_null.c                                                          [OK]
Compiling: tmk_core/common/eeconfig.c                                                               [OK]
Compiling: tmk_core/common/report.c                                                                 [OK]
Compiling: tmk_core/common/usb_util.c                                                               [OK]
Compiling: tmk_core/common/avr/suspend.c                                                            [OK]
Compiling: tmk_core/common/avr/timer.c                                                              [OK]
Compiling: tmk_core/common/sync_timer.c                                                             [OK]
Compiling: tmk_core/common/avr/bootloader.c                                                         [OK]
Assembling: tmk_core/common/avr/xprintf.S                                                           [OK]
Compiling: tmk_core/common/avr/printf.c                                                             [OK]
Compiling: tmk_core/protocol/vusb/main.c                                                            [OK]
Compiling: tmk_core/protocol/vusb/vusb.c                                                            [OK]
Compiling: tmk_core/protocol/vusb/usb_util.c                                                        [OK]
Compiling: lib/vusb/usbdrv/usbdrv.c                                                                 [OK]
Assembling: lib/vusb/usbdrv/usbdrvasm.S                                                             [OK]
Compiling: lib/vusb/usbdrv/oddebug.c                                                                [OK]
Linking: .build/anavi_macropad2_zoom.elf                                                            [OK]
Creating load file for flashing: .build/anavi_macropad2_zoom.hex                                    [OK]
Copying anavi_macropad2_zoom.hex to qmk_firmware folder                                             [OK]
Checking file size of anavi_macropad2_zoom.hex                                                      [WARNINGS]

 * The firmware size is approaching the maximum - 6182/6330 (97%, 148 bytes free)
> Please plug in the device ... 
> Device is found!
connecting: 33% complete
> Device has firmware version 2.5
> Device signature: 0x1e930b 
> Available space for user applications: 6650 bytes
> Suggested sleep time between sending pages: 7ms
> Whole page count: 104  page size: 64
> Erase function sleep duration: 728ms
parsing: 50% complete
> Erasing the memory ...
erasing: 66% complete
> Starting to upload ...
writing: 83% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you!
После перепрошивки девайс выдаёт Alt+A и Alt+V, что и требуется для Zoom.

Вот как выглядит раскладка Zoom: macropad2/keymaps/zoom/keymap.c

А вот она же, модифицированная для MacOS. Вместо Alt+A и Alt+V генерятся ⇧⌘A и ⇧⌘V: macropad2/keymaps/zoom-mac/keymap.c
OSZAR »