LeviLamina
Loading...
Searching...
No Matches
KeyRegistry.h
1#pragma once
2
3#include <functional>
4#include <memory>
5#include <string>
6#include <string_view>
7#include <vector>
8
9#include "ll/api/base/Macro.h"
10#include "ll/api/input/KeyHandle.h"
11#include "ll/api/mod/NativeMod.h"
12#include "mc/client/game/IClientInstance.h"
13#include "mc/client/input/Keymapping.h"
14#include "mc/client/input/MinecraftInputHandler.h"
15#include "mc/client/input/VanillaClientInputMappingFactory.h"
16#include "mc/deps/input/enums/FocusImpact.h"
17
18namespace ll::input {
19
20class KeyRegistry {
21 friend KeyHandle;
22 struct Impl;
23 struct Hooks;
24 std::unique_ptr<Impl> impl;
25
26 KeyRegistry();
27
28 void disableModKeys(std::string_view modName);
29
30 void triggerKeyDownCallback(int keyCode, ::FocusImpact focusImpact, ::IClientInstance& client);
31 void triggerKeyUpCallback(int keyCode, ::FocusImpact focusImpact, ::IClientInstance& client);
32
33 LLAPI void registerAllKeysToInputHandler(class MinecraftInputHandler& inputHandler);
34
35 void registerKeyboardInputs(
37 std::string_view mappingName,
38 KeyboardInputMapping& keyboardMapping,
39 MouseInputMapping& mouseMapping,
40 FocusImpact focusImpact
41 );
42
43 void processPendingKeyMappings(std::vector<::Keymapping>& newDefaultMapping);
44
45 void clear();
46
47public:
48 using ButtonDownHandler = KeyHandle::ButtonDownHandler;
49 using ButtonUpHandler = KeyHandle::ButtonUpHandler;
50
51 LLNDAPI static KeyRegistry& getInstance();
52
53 LLAPI KeyHandle& getOrCreateKey(
54 std::string_view name,
55 std::vector<int> const& defaultKeyCodes,
56 bool allowRemap = true,
57 std::weak_ptr<mod::Mod> mod = mod::NativeMod::current()
58 );
59
60 LLNDAPI bool hasKey(std::string_view name);
61
62 LLNDAPI std::vector<std::string> getRegisteredKeys() const;
63};
64
65} // namespace ll::input
Definition IClientInstance.h:5
Definition MinecraftInputHandler.h:5
Definition VanillaClientInputMappingFactory.h:5
Definition KeyboardInputMapping.h:5
Definition MouseInputMapping.h:5