On Sat, Sep 4, 2010 at 12:24 AM, Mikko Vartiainen <[email protected]> wrote:
> I made another approach to this problem, see attached patch.
Sorry the patch was bad. This new patch should be against the latest svn.
Index: data/wormux_default_maemo_config.xml
===================================================================
--- data/wormux_default_maemo_config.xml (revision 8351)
+++ data/wormux_default_maemo_config.xml (working copy)
@@ -12,10 +12,8 @@
<bind key="right" action="move_right" />
<bind key="right" action="move_right_slowly" shift="true" />
<bind key="up" action="up" />
- <bind key="left" action="up" alt="true" />
<bind key="up" action="up_slowly" shift="true" />
<bind key="down" action="down" />
- <bind key="right" action="down" alt="true" />
<bind key="down" action="down_slowly" shift="true" />
<bind key="left" action="move_camera_left" control="true" />
<bind key="right" action="move_camera_right" control="true" />
Index: src/gui/control_config.cpp
===================================================================
--- src/gui/control_config.cpp (revision 8351)
+++ src/gui/control_config.cpp (working copy)
@@ -100,21 +100,23 @@
virtual bool SendKey(const SDL_keysym & key)
{
- if (read_only || key.sym == SDLK_UNKNOWN)
+ SDLKey key_code = key.sym;
+
+ if (read_only || key_code == SDLK_UNKNOWN)
return false;
// Ignore modifiers-only key presses
- if (key.sym >= SDLK_NUMLOCK && key.sym <= SDLK_COMPOSE)
+ if (key_code >= SDLK_NUMLOCK && key_code <= SDLK_COMPOSE)
return true;
Keyboard *kbd = Keyboard::GetInstance();
// Reset some configs
- if (SDLK_BACKSPACE == key.sym ||
+ if (SDLK_BACKSPACE == key_code ||
#ifdef ANDROID
- SDLK_ESCAPE == key.sym ||
+ SDLK_ESCAPE == key_code ||
#endif
- SDLK_DELETE == key.sym) {
+ SDLK_DELETE == key_code) {
kbd->ClearKeyAction(key_action);
label_key->SetText(_("None"));
ctrl_box->SetValue(false);
@@ -131,13 +133,21 @@
bool has_shift = mod_bits & KMOD_SHIFT;
bool has_alt = mod_bits & KMOD_ALT;
bool has_ctrl = mod_bits & KMOD_CTRL;
+#ifdef MAEMO
+ bool has_mode = mod_bits & KMOD_MODE;
+ if (has_mode) {
+ if (key_code == SDLK_LEFT) key_code = SDLK_UP;
+ if (key_code == SDLK_RIGHT) key_code = SDLK_DOWN;
+ }
+#endif
+
for (std::vector<ControlItem*>::const_iterator it = selves->begin();
it != selves->end();
++it) {
const ControlItem *c = (*it);
- if (c!=this && c->key_value==key.sym
+ if (c!=this && c->key_value==key_code
&& has_ctrl == c->ctrl_box->GetValue()
&& has_alt == c->alt_box->GetValue()
&& has_shift == c->shift_box->GetValue()) {
@@ -153,7 +163,7 @@
}
}
- key_value = key.sym;
+ key_value = key_code;
label_key->SetText(kbd->GetKeyNameFromKey(key_value));
ctrl_box->SetValue(has_ctrl);
Index: src/interface/keyboard.cpp
===================================================================
--- src/interface/keyboard.cpp (revision 8351)
+++ src/interface/keyboard.cpp (working copy)
@@ -37,10 +37,6 @@
# define SDLK_LAST SDL_NUM_SCANCODES
#endif
-#ifdef MAEMO
-# undef KMOD_ALT
-# define KMOD_ALT KMOD_MODE
-#endif
int Keyboard::GetRawKeyCode(int key_code) const
{
@@ -104,10 +100,6 @@
void Keyboard::SetDefaultConfig()
{
SetKeyAction(SDLK_ESCAPE, ManMachineInterface::KEY_QUIT);
-#ifdef MAEMO
- SaveKeyEvent(ManMachineInterface::KEY_UP, SDLK_LEFT, false, true, false);
- SaveKeyEvent(ManMachineInterface::KEY_DOWN, SDLK_RIGHT, false, true, false);
-#endif
}
void Keyboard::SetConfig(const xmlNode *node)
@@ -293,6 +285,12 @@
SDLKey basic_key_code = event.key.keysym.sym;
if (basic_key_code >= MODIFIER_OFFSET)
return;
+#ifdef MAEMO
+ if (SDL_GetModState() & KMOD_MODE) {
+ if (basic_key_code == SDLK_LEFT) basic_key_code = SDLK_UP;
+ if (basic_key_code == SDLK_RIGHT) basic_key_code = SDLK_DOWN;
+ }
+#endif
int key_code;
if (modifier_bits != previous_modifier_bits) {
std::set<SDLKey>::iterator it;
Index: src/interface/man_machine_interface.cpp
===================================================================
--- src/interface/man_machine_interface.cpp (revision 8351)
+++ src/interface/man_machine_interface.cpp (working copy)
@@ -40,10 +40,6 @@
#include "sound/jukebox.h"
#include "weapon/weapons_list.h"
-#ifdef MAEMO
-# undef SDLK_RALT
-# define SDLK_RALT SDLK_MODE
-#endif
void ManMachineInterface::Reset()
{
@@ -755,11 +751,7 @@
if(name == "lshift") return SDLK_LSHIFT;
if(name == "rctrl") return SDLK_RCTRL;
if(name == "lctrl") return SDLK_LCTRL;
-#ifdef MAEMO
- if(name == "ralt") return SDLK_MODE;
-#else
if(name == "ralt") return SDLK_RALT;
-#endif
if(name == "lalt") return SDLK_LALT;
if(name == "rmeta") return SDLK_RMETA;
if(name == "lmeta") return SDLK_LMETA;
@@ -1016,11 +1008,7 @@
if(key == SDLK_LSHIFT) return "lshift";
if(key == SDLK_RCTRL) return "rctrl";
if(key == SDLK_LCTRL) return "lctrl";
-#ifdef MAEMO
- if(key == SDLK_MODE) return "ralt";
-#else
if(key == SDLK_RALT) return "ralt";
-#endif
if(key == SDLK_LALT) return "lalt";
if(key == SDLK_RMETA) return "rmeta";
if(key == SDLK_LMETA) return "lmeta";
_______________________________________________
Wormux-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wormux-dev