MCPcopy Create free account
hub / github.com/ErrorAtLine0/infinipaint / InputManager

Method InputManager

src/InputManager.cpp:53–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51#endif
52
53InputManager::InputManager(MainProgram& initMain):
54 main(initMain) {
55#ifdef __ANDROID__
56 AndroidJNICalls::globalInputManager = this;
57#endif
58
59 frame_reset({0, 0});
60
61 defaultKeyAssignments[{0, SDLK_W}] = KEY_CAMERA_ROTATE_COUNTERCLOCKWISE;
62 defaultKeyAssignments[{0, SDLK_Q}] = KEY_CAMERA_ROTATE_CLOCKWISE;
63 defaultKeyAssignments[{0, SDLK_DELETE}] = KEY_DRAW_DELETE;
64 defaultKeyAssignments[{CTRL_MOD, SDLK_Z}] = KEY_UNDO;
65 defaultKeyAssignments[{CTRL_MOD, SDLK_R}] = KEY_REDO;
66 defaultKeyAssignments[{0, SDLK_TAB}] = KEY_NOGUI;
67 defaultKeyAssignments[{0, SDLK_F11}] = KEY_FULLSCREEN;
68 defaultKeyAssignments[{CTRL_MOD, SDLK_S}] = KEY_SAVE;
69 defaultKeyAssignments[{CTRL_MOD | SDL_KMOD_SHIFT, SDLK_S}] = KEY_SAVE_AS;
70 defaultKeyAssignments[{CTRL_MOD, SDLK_C}] = KEY_COPY;
71 defaultKeyAssignments[{CTRL_MOD, SDLK_X}] = KEY_CUT;
72 defaultKeyAssignments[{CTRL_MOD, SDLK_V}] = KEY_PASTE;
73 defaultKeyAssignments[{CTRL_MOD | SDL_KMOD_SHIFT, SDLK_V}] = KEY_PASTE_IMAGE;
74 defaultKeyAssignments[{0, SDLK_B}] = KEY_DRAW_TOOL_BRUSH;
75 defaultKeyAssignments[{0, SDLK_E}] = KEY_DRAW_TOOL_ERASER;
76 defaultKeyAssignments[{0, SDLK_U}] = KEY_DRAW_TOOL_ZOOM;
77 defaultKeyAssignments[{0, SDLK_L}] = KEY_DRAW_TOOL_LASSOSELECT;
78 defaultKeyAssignments[{0, SDLK_H}] = KEY_DRAW_TOOL_PAN;
79 defaultKeyAssignments[{0, SDLK_T}] = KEY_DRAW_TOOL_TEXTBOX;
80 defaultKeyAssignments[{0, SDLK_R}] = KEY_DRAW_TOOL_RECTANGLE;
81 defaultKeyAssignments[{0, SDLK_C}] = KEY_DRAW_TOOL_ELLIPSE;
82 defaultKeyAssignments[{0, SDLK_X}] = KEY_DRAW_TOOL_RECTSELECT;
83 defaultKeyAssignments[{0, SDLK_I}] = KEY_DRAW_TOOL_EYEDROPPER;
84 defaultKeyAssignments[{0, SDLK_P}] = KEY_DRAW_TOOL_SCREENSHOT;
85 defaultKeyAssignments[{0, SDLK_N}] = KEY_DRAW_TOOL_LINE;
86 defaultKeyAssignments[{0, SDLK_F1}] = KEY_OPEN_CHAT;
87 defaultKeyAssignments[{0, SDLK_F2}] = KEY_SHOW_PLAYER_LIST;
88 defaultKeyAssignments[{0, SDLK_SPACE}] = KEY_HOLD_TO_PAN;
89 defaultKeyAssignments[{0, SDLK_Z}] = KEY_HOLD_TO_ZOOM;
90 defaultKeyAssignments[{0, SDLK_ESCAPE}] = KEY_DESELECT_AND_EDIT_TOOL;
91
92#ifdef __EMSCRIPTEN__
93 // Without this, SDL eats the CTRL-V event that initiates the paste event
94 // https://github.com/pthom/hello_imgui/issues/3#issuecomment-1564536870
95 EM_ASM({
96 window.addEventListener('keydown', function(event) {
97 if((event.ctrlKey || event.metaKey) && (event.key == 'v' || event.code == 'KeyV')) {
98 if(Module["ccall"]('is_text_input_happening', 'number', [], []) === 1)
99 event.stopImmediatePropagation();
100 }
101 }, true);
102 });
103 emscripten_browser_clipboard::paste_event([](std::string&& pasteData, void* callbackData){
104 InputManager* inMan = (InputManager*)callbackData;
105 inMan->process_text_paste(pasteData, true);
106 }, this);
107#endif
108
109 keyAssignments = defaultKeyAssignments;
110}

Callers

nothing calls this directly

Calls 2

functionClass · 0.85
process_text_pasteMethod · 0.80

Tested by

no test coverage detected