- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 4,9 тыс.
- Подписчиков на Modrinth
- 4
- версии
- 3
- Обновлён
- 15 сентября 202615 сент.
- Опубликован
- в 2025
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
Этот мод расширяет ванильные привязки клавиш поддержкой комбо, позволяя привязать любое действие к аккорду или последовательности клавиш вместо одной клавиши.
Он только клиентский и не требует установки на сервере.

Возможности
Аккорды
- Привязывайте действия к комбинациям клавиш, таким как Left Shift + E, Left Control + Left Button или любой другой паре удерживаемая клавиша + триггер
- Любая клавиша или кнопка мыши может быть триггером или удерживаемой клавишей в аккорде. Последняя нажатая при записи клавиша становится триггером, а все ранее удержанные клавиши дополняют комбинацию
- Без ограничений! Удерживайте сколько угодно клавиш для сколь угодно дикой комбинации
- Может сопровождаться комбо-последовательностью
Последовательности
- Привязывайте действия к повторным нажатиям клавиш, таким как двойное нажатие Q или тройное нажатие Space
- Настраиваемое временное окно определяет, как быстро должны происходить нажатия
- Без ограничений! Привязывайте к любому количеству нажатий
Интеграция в экран управления
- Запись комбо встроена прямо в ванильный экран Управление > Привязки клавиш, то есть отдельного интерфейса нет
- Нажмите Escape, чтобы снять привязку клавиши
Настройка
- Allow Conflicts: Если отключено, нажатие комбо не будет также запускать привязки, чьи клавиши полностью в него входят. Например, если привязаны и E, и Left Shift + E, нажатие Left Shift + E обычно запустит обе. Отключение этой опции гарантирует, что сработает только Left Shift + E. То же самое касается последовательностей: если одиночное нажатие и многократное нажатие привязаны к одной клавише (например, Q и Q Q), нажатие этой клавиши запустит только привязку одиночного нажатия. Две привязки вроде Left Control + E и Left Shift + E не считаются конфликтующими, поскольку нажатие одной никогда не запустит другую случайно. Они обе сработают, только если вы намеренно удержите Left Control + Left Shift + E. Эта настройка применяется только к привязкам с одинаковой клавишей-триггером (по умолчанию: вкл.)
- Sequence Window: Как быстро нужно повторно нажимать клавишу в игре, чтобы последовательность засчиталась (по умолчанию: 400 мс)
- Sequence Recording Window: Как долго регистратор ждёт между нажатиями при записи последовательности в экране управления (по умолчанию: 200 мс)
- Настройки сохраняются в
config/combind.json
Случаи использования
Этот мод особенно хорош в модпаках, где клавиш мало и каждая привязка должна быть продуманной, но в ванилле он работает не хуже, добавляя гибкости.
Практический пример
Двойное нажатие Q (Q Q) (или даже тройное нажатие Q (Q Q Q)!) для выбрасывания предметов вместо одиночного нажатия. Больше никаких случайных выбросов.
Совместимость
У этого мода нет обязательных зависимостей кроме Fabric API. Он работает с:
- ModMenu (рекомендуется) — добавляет кнопку настроек в список модов как альтернативу ручному редактированию
config/combind.json - Controlling и Searchables — ищите привязки по их комбо, используя синтаксис вроде
key:"Left Shift + E"илиkey:"Q Q". Не поддерживается начиная сcombind-v1.0.0+26.3, пока оба мода не выпустят версию, совместимую с 26.3
Примечание: Некоторые специфичные ванильные взаимодействия привязаны к определённому типу ввода и могут не работать после переназначения. Например, кнопка мыши, привязанная к «Открыть инвентарь», не закроет его так, как это сделала бы клавиша, а клавиша, привязанная к «Выбрать блок», не поддержит перетаскивание для дублирования блоков внутри контейнеров так, как это сделала бы кнопка мыши.
Примечание: Если вы столкнётесь с проблемами совместимости, пожалуйста, сообщите о них на странице GitHub Issues.
Для разработчиков модов
Использование API Combind
Combind предоставляет три API-класса в пакете net.pemiridosa.combind.api, которые позволяют вашему моду регистрировать привязки клавиш с полной поддержкой комбо.
Настройка зависимости
Добавьте Combind как зависимость времени компиляции через репозиторий Modrinth Maven:
// build.gradle
repositories {
maven { url "https://api.modrinth.com/maven" }
}
dependencies {
compileOnly "maven.modrinth:combind:VERSION"
localRuntime "maven.modrinth:combind:VERSION" // optional: for dev runs
}Объявите зависимость в fabric.mod.json. Используйте depends, если ваш мод требует Combind, или suggests, если она необязательна:
"depends": {
"combind": "*"
}API-классы
| Класс | Назначение |
|---|---|
CombindKeyBinding | Оборачивает ванильный KeyMapping с поддержкой комбо — основная точка входа |
KeyCombo | Описывает комбо: одиночная клавиша, аккорд, последовательность или аккорд + последовательность |
InputKey | Представляет один физический ввод — InputKey.keyboard(scancode) или InputKey.mouse(button) |
Примеры
Аккорд — удерживаемый модификатор(ы) + клавиша-триггер
Привяжите действие к Left Shift + E:
KeyMapping.Category category = KeyMapping.Category.register(
Identifier.fromNamespaceAndPath("mymod", "mymod")
);
KeyMapping someActionMapping = KeyMappingHelper.registerKeyMapping(
new KeyMapping("key.mymod.someaction", InputConstants.KEY_E, category)
);
// Left Shift + E
CombindKeyBinding someActionBinding = CombindKeyBinding.of(someActionMapping,
new KeyCombo(
InputKey.keyboard(InputConstants.KEY_E),
new InputKey[]{ InputKey.keyboard(InputConstants.KEY_LSHIFT) }
)
);
someActionBinding
.onPress(ctx -> LOGGER.info("Some action PRESSED — combo: {}", ctx.combo().getDisplayName()))
.onRelease(ctx -> LOGGER.info("Some action RELEASED — combo: {}", ctx.combo().getDisplayName()));Аккорд с несколькими модификаторами
Привяжите действие к Left Control + Left Shift + E:
KeyMapping someActionMapping = KeyMappingHelper.registerKeyMapping(
new KeyMapping("key.mymod.someaction", InputConstants.KEY_E, category)
);
// Left Control + Left Shift + E
CombindKeyBinding someActionBinding = CombindKeyBinding.of(someActionMapping,
new KeyCombo(
InputKey.keyboard(InputConstants.KEY_E),
new InputKey[]{
InputKey.keyboard(InputConstants.KEY_LCONTROL),
InputKey.keyboard(InputConstants.KEY_LSHIFT)
}
)
);
someActionBinding
.onPress(ctx -> LOGGER.info("Some action PRESSED — combo: {}", ctx.combo().getDisplayName()))
.onRelease(ctx -> LOGGER.info("Some action RELEASED — combo: {}", ctx.combo().getDisplayName()));Последовательность — нажатие одной и той же клавиши несколько раз
Привяжите действие к M M (двойное нажатие) или M M M (тройное нажатие):
KeyMapping someActionMapping = KeyMappingHelper.registerKeyMapping(
new KeyMapping("key.mymod.someaction", InputConstants.KEY_M, category)
);
// Double-tap M (M M)
CombindKeyBinding someActionBinding = CombindKeyBinding.of(someActionMapping,
KeyCombo.sequence(InputKey.keyboard(InputConstants.KEY_M), 2)
);
// Triple-tap M (M M M) — even safer
CombindKeyBinding someActionBinding = CombindKeyBinding.of(someActionMapping,
KeyCombo.sequence(InputKey.keyboard(InputConstants.KEY_M), 3)
);
someActionBinding
.onPress(ctx -> LOGGER.info("Some action PRESSED — combo: {}", ctx.combo().getDisplayName()))
.onRelease(ctx -> LOGGER.info("Some action RELEASED — combo: {}", ctx.combo().getDisplayName()));Аккорд + последовательность — удерживайте модификатор(ы) при многократном нажатии
Привяжи действие к Left Shift + Q Q (двойное нажатие Q с зажатым Shift):
// Left Shift + Q Q
CombindKeyBinding binding = CombindKeyBinding.of(mapping,
new KeyCombo(
InputKey.keyboard(InputConstants.KEY_Q),
new InputKey[]{ InputKey.keyboard(InputConstants.KEY_LSHIFT) },
2
)
);Кнопка мыши как триггер
Привяжи действие к Left Control + Left Button:
// Left Control + Left Mouse Button
CombindKeyBinding binding = CombindKeyBinding.of(mapping,
new KeyCombo(
InputKey.mouse(InputConstants.MOUSE_BUTTON_LEFT),
new InputKey[]{ InputKey.keyboard(InputConstants.KEY_LCONTROL) }
)
);Одна клавиша (явная комбинация не нужна)
CombindKeyBinding.of(mapping) выводит начальную комбинацию из клавиши по умолчанию у KeyMapping:
CombindKeyBinding binding = CombindKeyBinding.of(mapping); // defaults to the KeyMapping's keyБез привязки — по умолчанию клавиша не назначена
// Player must configure this in the Controls > Key Binds screen
CombindKeyBinding binding = CombindKeyBinding.of(mapping, KeyCombo.unbound());Опрос по тикам (в ванильном стиле)
Если ты предпочитаешь стандартный паттерн опроса по тикам вместо колбэков, он работает без изменений через ванильный KeyMapping:
ClientTickEvents.END_CLIENT_TICK.register(client -> {
while (someActionMapping.consumeClick()) {
// handle each queued click
}
if (someActionMapping.isDown()) {
// binding is currently held
}
});Подробнее — в полной реализации по адресу src/client/java/net/pemiridosa/combind/api.
Частые вопросы
Как установить Combind?
Установите Fabric под свою версию Minecraft, скачайте Combind под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Combind?
У Combind есть сборки для Minecraft 26.1.2–26.3.
Нужен ли Combind на сервере?
Ставится только в игру; на сервер ставить не нужно