mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-09-01 04:01:56 +02:00
An ugly fix for numpad, since it seems event.key.keysym.mod isn't entirely reliable for some unknown reason
Partial revert of 7ce9907f82
This commit is contained in:
@@ -450,8 +450,12 @@ float currentWidth, currentHeight;
|
|||||||
void EventProcess(SDL_Event event)
|
void EventProcess(SDL_Event event)
|
||||||
{
|
{
|
||||||
if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP)
|
if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP)
|
||||||
if ((!(event.key.keysym.mod&KEY_MOD_NUM)) ^ (!!(event.key.keysym.mod&KEY_MOD_SHIFT)))
|
|
||||||
{
|
{
|
||||||
|
if (event.key.keysym.unicode==0)
|
||||||
|
{
|
||||||
|
// If unicode is zero, this could be a numpad key with numlock off, or numlock on and shift on (unicode is set to 0 by SDL or the OS in these circumstances. If numlock is on, unicode is the relevant digit character).
|
||||||
|
// For some unknown reason, event.key.keysym.mod seems to be unreliable on some computers (keysum.mod&KEY_MOD_NUM is opposite to the actual value), so check keysym.unicode instead.
|
||||||
|
// Note: unicode is always zero for SDL_KEYUP events, so this translation won't always work properly for keyup events.
|
||||||
SDLKey newKey = MapNumpad(event.key.keysym.sym);
|
SDLKey newKey = MapNumpad(event.key.keysym.sym);
|
||||||
if (newKey != event.key.keysym.sym)
|
if (newKey != event.key.keysym.sym)
|
||||||
{
|
{
|
||||||
@@ -459,6 +463,7 @@ void EventProcess(SDL_Event event)
|
|||||||
event.key.keysym.unicode = 0;
|
event.key.keysym.unicode = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
switch (event.type)
|
switch (event.type)
|
||||||
{
|
{
|
||||||
case SDL_QUIT:
|
case SDL_QUIT:
|
||||||
|
@@ -301,13 +301,10 @@ void Textbox::Tick(float dt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Textbox::OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt)
|
void Textbox::OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt)
|
||||||
{
|
|
||||||
if (keyDown == key)
|
|
||||||
{
|
{
|
||||||
keyDown = 0;
|
keyDown = 0;
|
||||||
characterDown = 0;
|
characterDown = 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt)
|
void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user