mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
*CtrlCore: gtk be fixed issues with keys (RM #410)
git-svn-id: svn://ultimatepp.org/upp/trunk@5700 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
beeeec2768
commit
3ac8aa0b1b
3 changed files with 41 additions and 16 deletions
|
|
@ -5,19 +5,17 @@
|
|||
|
||||
#include <guiplatform.h>
|
||||
|
||||
#ifdef flagGTK
|
||||
#define GUIPLATFORM_INCLUDE "Gtk.h"
|
||||
#endif
|
||||
|
||||
#ifndef GUIPLATFORM_INCLUDE
|
||||
|
||||
#ifdef PLATFORM_WIN32
|
||||
#define GUIPLATFORM_INCLUDE "Win32Gui.h"
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_POSIX
|
||||
#define GUIPLATFORM_INCLUDE "X11Gui.h"
|
||||
#endif
|
||||
#ifdef PLATFORM_WIN32
|
||||
#define GUIPLATFORM_INCLUDE "Win32Gui.h"
|
||||
#else
|
||||
#ifdef flagGTK
|
||||
#define GUIPLATFORM_INCLUDE "Gtk.h"
|
||||
#else
|
||||
#define GUIPLATFORM_INCLUDE "X11Gui.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -413,25 +413,52 @@ void Ctrl::Proc()
|
|||
case GDK_KEY_RELEASE:
|
||||
kv = CurrentEvent.value;
|
||||
if(kv >= 0 && kv < 65536) {
|
||||
LOG(FormatIntHex(kv) << ' ' << (char)kv);
|
||||
LLOG(FormatIntHex(kv) << ' ' << (char)kv);
|
||||
if(kv >= 'a' && kv <= 'z')
|
||||
kv = kv - 'a' + 'A';
|
||||
static Tuple2<int, int> cv[] = {
|
||||
{ GDK_KEY_BackSpace, K_BACKSPACE },
|
||||
{ GDK_KEY_Tab, K_TAB },
|
||||
{ GDK_KEY_ISO_Left_Tab, K_TAB },
|
||||
{ GDK_KEY_Return, K_ENTER },
|
||||
{ GDK_KEY_Escape, K_ESCAPE },
|
||||
{ GDK_KEY_space, K_SPACE },
|
||||
{ GDK_KEY_Control_L, K_CTRL_KEY },
|
||||
{ GDK_KEY_Control_R, K_CTRL_KEY },
|
||||
{ GDK_KEY_Shift_L, K_SHIFT_KEY },
|
||||
{ GDK_KEY_Shift_R, K_SHIFT_KEY },
|
||||
{ GDK_KEY_Alt_L, K_ALT_KEY },
|
||||
{ GDK_KEY_Alt_R, K_ALT_KEY },
|
||||
|
||||
{ GDK_KEY_KP_Space, K_SPACE },
|
||||
{ GDK_KEY_KP_Tab, K_TAB },
|
||||
{ GDK_KEY_KP_Enter, K_ENTER },
|
||||
{ GDK_KEY_KP_F1, K_F1 },
|
||||
{ GDK_KEY_KP_F2, K_F2 },
|
||||
{ GDK_KEY_KP_F3, K_F3 },
|
||||
{ GDK_KEY_KP_F4, K_F4 },
|
||||
{ GDK_KEY_KP_Home, K_HOME },
|
||||
{ GDK_KEY_KP_Left, K_LEFT },
|
||||
{ GDK_KEY_KP_Up, K_UP },
|
||||
{ GDK_KEY_KP_Right, K_RIGHT },
|
||||
{ GDK_KEY_KP_Down, K_DOWN },
|
||||
{ GDK_KEY_KP_Page_Up, K_PAGEUP },
|
||||
{ GDK_KEY_KP_Page_Down, K_PAGEDOWN },
|
||||
{ GDK_KEY_KP_End, K_END },
|
||||
{ GDK_KEY_KP_Begin, K_HOME },
|
||||
{ GDK_KEY_KP_Insert, K_INSERT },
|
||||
{ GDK_KEY_KP_Delete, K_DELETE },
|
||||
};
|
||||
Tuple2<int, int> *x = FindTuple(cv, __countof(cv), kv);
|
||||
if(x)
|
||||
kv = x->b;
|
||||
else
|
||||
kv += K_DELTA;
|
||||
if(GetShift())
|
||||
if(GetShift() && kv != K_SHIFT_KEY)
|
||||
kv |= K_SHIFT;
|
||||
if(GetCtrl())
|
||||
if(GetCtrl() && kv != K_CTRL_KEY)
|
||||
kv |= K_CTRL;
|
||||
if(GetAlt())
|
||||
if(GetAlt() && kv != K_ALT_KEY)
|
||||
kv |= K_ALT;
|
||||
LLOG(GetKeyDesc(kv) << ", pressed: " << pressed << ", count: " << CurrentEvent.count);
|
||||
DispatchKey(!pressed * K_KEYUP + kv, CurrentEvent.count);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ K_DELETE = GDK_KEY_Delete|K_DELTA,
|
|||
|
||||
K_SHIFT_KEY = GDK_KEY_Shift_L|K_DELTA,
|
||||
K_CTRL_KEY = GDK_KEY_Control_L|K_DELTA,
|
||||
K_ALT_KEY = GDK_KEY_Meta_L|K_DELTA,
|
||||
K_ALT_KEY = GDK_KEY_Alt_L|K_DELTA,
|
||||
K_CAPSLOCK = GDK_KEY_Caps_Lock|K_DELTA,
|
||||
K_PRIOR = GDK_KEY_Page_Up|K_DELTA,
|
||||
K_PAGEUP = GDK_KEY_Page_Up|K_DELTA,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue