Скрипт узла, который проверяет текущее активное приложение, работающее в вашей ОС, анализирует некоторые настраиваемые правила и отправляет индекс целевого уровня на клавиатуру QMK по необработанному скрыту, чтобы вы могли изменить слои программно.
Micro -Z12 использует 4 слоя: Vim, Browser, Figma и по умолчанию. Энкодеры делают разные вещи на каждом слое. Чаще всего, работая на фигме, я хотел увеличить масштаб, используя правильный энкодер, но если бы у меня был активный слой по умолчанию, вместо этого прокручивал бы кодер. Этот скрипт решает такие проблемы, что меня автоматически изменяет слой в зависимости от основного приложения, работающего в OSX, забывая о необходимости вручную переключать слой сам.
Первым требованием является клавиатура, работающая на QMK, и настройте ее для использования RAW HID. См. Пример в разделе ниже.
Этот скрипт узла требует узела с тремя зависимостями: скрывающийся узел, на основе JSON на основе кондиционированных и правильных-логик-эваляторных и активных-выигрышных CLI. Поскольку узел, вероятно, уже установлен, просто установите зависимости от Package.json:
$ npm install
Скрипт будет проверять приложение и параметры заголовка active-win-cli каждые полсекунды и отправлять в MicroPAD индекс слоя, на который я хочу нацелиться в зависимости от приложения, используя метод write node-hid .
Чтобы определить, какой индекс отправлять, нам необходимо проанализировать набор условий и правил, которые полностью настраиваются с использованием простого файла JSON. Это также позволяет нам использовать несколько сценариев для нацеливания на несколько устройств QMK одновременно.
Файл JSON - это объект, который содержит имя продукта, значения таймера для инициализации, переосмыслить в случае отключения и бегуна (как часто мы хотим проверить данные текущего приложения). Он также содержит два объекта для условий и правил.
Conditons - это объект, который включает в себя один объект на условие, которое будет проанализировано правилами.
Следуйте документации для структуры объекта Conditons и/или см. Примеры использования, даже Config.json, используемый в этом репо.
Правила - это массив, который включает в себя один объект на набор условий.
Следуйте документации для структуры объекта правил и/или см. Примеры использования, даже Config.json, используемый в этом репо.
На стороне QMK вам нужно будет добавить RAW_ENABLE = yes в файле правил.mk. Вызов write из скрипта узла запустит метод raw_hid_receive на QMK, где вы можете выполнить layer_clear(); Чтобы очистить предыдущие вызовы, затем layer_on(data[0]) , чтобы измениться на слой, отправленный через поток.
Примечание. Мы отправляем 99 когда хотим восстановить уровень по умолчанию (0), по -видимому, layer_on(data[0]) не работает в raw_hid_receive , когда мы отправляем 0 .
Пример кода в keymap.c:
#include "raw_hid.h"
#ifdef RAW_ENABLE
void raw_hid_receive ( uint8_t * data , uint8_t length ) {
layer_clear ();
if ( data [ 0 ] == 99 ) {
layer_on ( _TERM );
}
else {
layer_on ( data [ 0 ]);
}
}
#endif Скрипт проверяет, есть ли подключение к устройству, которое мы хотим управлять, используя node-hid (мы передаем только имя продукта, в данном случае z12 , и значения использования и использования по умолчанию). Он ждет, когда будет установлено соединение (оно возвращает каждые 2 с). Он также воссоединяется после отключения:
$ node index.js
Файл JSON по умолчанию - это config.json , но вы можете использовать другой и добавить его имя в качестве аргумента к основному вызову:
$ node index.js otherfile.json
Это также может быть вызвано с работы Cron.
Вы должны дать терминал ScreenRecordingPermission в MacOS, в противном случае активная победа всегда будет пустой строкой для заголовка.
Большое спасибо Sindresorhus за превосходную active-win-cli , Fauxpark, Presdition и Riblee за помощь в понимании подключения к уравному узлу, указателю uint8_t* data для программного изменения уровня. Эль Муньос за то, что помог мне удалить все глобальные DEPS и перенести их в Package.json.