Нынче почти каждый день приходится общаться с коллегами через 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