mirror of
https://github.com/JetSetIlly/Gopher2600.git
synced 2025-04-02 11:02:17 -04:00
69 lines
2.5 KiB
Go
69 lines
2.5 KiB
Go
// This file is part of Gopher2600.
|
|
//
|
|
// Gopher2600 is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Gopher2600 is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Gopher2600. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
package sdlimgui
|
|
|
|
import (
|
|
"github.com/inkyblackness/imgui-go/v4"
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
)
|
|
|
|
func (plt *platform) setKeyMapping() {
|
|
keys := map[int]int{
|
|
imgui.KeyTab: sdl.SCANCODE_TAB,
|
|
imgui.KeyLeftArrow: sdl.SCANCODE_LEFT,
|
|
imgui.KeyRightArrow: sdl.SCANCODE_RIGHT,
|
|
imgui.KeyUpArrow: sdl.SCANCODE_UP,
|
|
imgui.KeyDownArrow: sdl.SCANCODE_DOWN,
|
|
imgui.KeyPageUp: sdl.SCANCODE_PAGEUP,
|
|
imgui.KeyPageDown: sdl.SCANCODE_PAGEDOWN,
|
|
imgui.KeyHome: sdl.SCANCODE_HOME,
|
|
imgui.KeyEnd: sdl.SCANCODE_END,
|
|
imgui.KeyInsert: sdl.SCANCODE_INSERT,
|
|
imgui.KeyDelete: sdl.SCANCODE_DELETE,
|
|
imgui.KeyBackspace: sdl.SCANCODE_BACKSPACE,
|
|
imgui.KeySpace: sdl.SCANCODE_BACKSPACE,
|
|
imgui.KeyEnter: sdl.SCANCODE_RETURN,
|
|
imgui.KeyEscape: sdl.SCANCODE_ESCAPE,
|
|
imgui.KeyA: sdl.SCANCODE_A,
|
|
imgui.KeyC: sdl.SCANCODE_C,
|
|
imgui.KeyV: sdl.SCANCODE_V,
|
|
imgui.KeyX: sdl.SCANCODE_X,
|
|
imgui.KeyY: sdl.SCANCODE_Y,
|
|
imgui.KeyZ: sdl.SCANCODE_Z,
|
|
}
|
|
|
|
// Keyboard mapping. ImGui will use those indices to peek into the io.KeysDown[] array.
|
|
for imguiKey, nativeKey := range keys {
|
|
imgui.CurrentIO().KeyMap(imguiKey, nativeKey)
|
|
}
|
|
}
|
|
|
|
func (img *SdlImgui) updateKeyModifier() {
|
|
modState := sdl.GetModState()
|
|
mapModifier := func(lMask sdl.Keymod, lKey int, rMask sdl.Keymod, rKey int) (lResult int, rResult int) {
|
|
if (modState & lMask) != 0 {
|
|
lResult = lKey
|
|
}
|
|
if (modState & rMask) != 0 {
|
|
rResult = rKey
|
|
}
|
|
return
|
|
}
|
|
io := imgui.CurrentIO()
|
|
io.KeyShift(mapModifier(sdl.KMOD_LSHIFT, sdl.SCANCODE_LSHIFT, sdl.KMOD_RSHIFT, sdl.SCANCODE_RSHIFT))
|
|
io.KeyCtrl(mapModifier(sdl.KMOD_LCTRL, sdl.SCANCODE_LCTRL, sdl.KMOD_RCTRL, sdl.SCANCODE_RCTRL))
|
|
io.KeyAlt(mapModifier(sdl.KMOD_LALT, sdl.SCANCODE_LALT, sdl.KMOD_RALT, sdl.SCANCODE_RALT))
|
|
}
|