Skip to content

Commit 338660d

Browse files
committed
add immediate chord
1 parent 1f4c5c6 commit 338660d

File tree

5 files changed

+102
-481
lines changed

5 files changed

+102
-481
lines changed

README.md

+15
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,18 @@ const uint8_t combos_size = sizeof(combos)/sizeof(ComboWithKeycode);
9292
9393
Здесь при единичном зажатии клавиши `CMB_000` будет включаться 4 слой, а при нажатии этой клавиши одновременно с `CMB_001` будет нажиматься `Win+Shift+A`.
9494
95+
## Моментальный аккорд
96+
97+
В данной библиотеке есть такая фича как **моментальный аккорд**. Его суть заключается в том, что при нажатии клавиш, которые его образуют, он нажимается моментально, без ожидания `COMBO_WAIT_TIME`. Если же через время меньше, чем `COMBO_WAIT_TIME`, нажимается другая клавиша, образующая текущий аккорд, то нажатая клавиша **отменяется**, и продолжается формирование другого аккорда. Если же проходит заданное время, или нажимается другая, неаккордовая клавиша, то считается что данный аккорд случился, и он больше не отменится.
98+
99+
Задаётся моментальный аккорд через макрос `IMMEDIATE_CHORD(KEYCODE, UNDO_KEYCODE, ...)`. Где при обычном нажатии нажимается `KEYCODE`, а в случае отмены _отпускается_ кейкод, заданный в `UNDO_KEYCODE`. Обычно `UNDO_KEYCODE` нужно писать такой же, как и `KEYCODE`, но бывают случаи когда они могут различаться. Например, если в `KEYCODE` стоит залипающий шифт, то нельзя задать там одинаковые кейкоды, ведь нажатие и отжатие залипающего шифта может привести к тому, что он применится к следующей клавише. А если залипающий шифт является составной частью других аккордов, то получится так, что при нажатии сложного аккорда, заключащего в себе залипающий шифт, может моментально активироваться залипающий шифт и применится к следующей клавише. Поэтому отжатие кейкода и отмена различаются. Поэтому для отмены залипающего шифта вы можете написать особый обработчик.
100+
101+
Или, например, в случае, если моментальный аккорд стоит на букве, то отмена буквы будет являться её отжатие и посылка <kbd>Backspace</kbd>.
102+
103+
Моментальный аккорд может пригодиться в следующем случае: если клавиша <kbd>Shift</kbd> стоит на аккорде, то хочется чтобы она нажималась сразу. Это актуально при работе с визуальными редакторами, где параллельно происходит работа с мышью. И даже задержки отправки <kbd>Shift</kbd> в 100мс тут могут оказать значительное неудобство, поэтому <kbd>Shift</kbd> необходимо делать моментальным аккордом, а его единоразовое нажатие в случае, если он является составной частью других аккордов, ничего не стоит.
104+
105+
В иных случаях моментальный аккорд особо не нужен, потому что работа с аккордами и другими клавишами в данном расширении реализована хорошо, и вас не должны волновать тайминги.7
106+
95107
## Поместить аккорды на вашу раскладку
96108
97109
Используйте кейкоды `CMB_000`-`CMB_XXX` (зависит сколько вы задали их в начале файла).
@@ -164,6 +176,9 @@ void combo_max_size_error(void) {
164176
165177
# Changelog
166178
179+
**23.01.2021**:
180+
* Добавлен моментальный аккорд.
181+
167182
**20.01.2021**:
168183
* Теперь надо писать `PROGMEM` у массива `combos`.
169184
* Теперь надо определить функции для логирования ошибок: `combo_max_size_error`, `combo_max_count_error`.

0 commit comments

Comments
 (0)