vak: (Default)
[personal profile] vak
Нынче почти каждый день приходится общаться с коллегами через 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
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org