Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/input.cc10
-rw-r--r--src/client/keyboard.cc19
2 files changed, 19 insertions, 10 deletions
diff --git a/src/client/input.cc b/src/client/input.cc
index 7188de0..d4ccb17 100644
--- a/src/client/input.cc
+++ b/src/client/input.cc
@@ -482,6 +482,8 @@ Key::Modifier convert_SDL_modifier(int const sdlmodifier)
void key_pressed(Key *key)
{
+ // FIXME implement a real 'console key'
+
if (key->bind(Key::None).compare("ui_console") == 0) {
// FIXME bah
local_direction = 0.0f;
@@ -510,10 +512,14 @@ void key_pressed(Key *key)
} else if (core::application()->connected() && core::localcontrol()) {
char c = key->bind(convert_SDL_modifier(keyboard_modifiers)).c_str()[0];
- if (c == '+') {
+ if (c == '@') {
+ // target bind
+ if (targets::current_id())
+ core::cmd() << key->bind(convert_SDL_modifier(keyboard_modifiers)) << " " << targets::current_id() <<"\n";
+ } else if (c == '+') {
// action bind
action_press(key, key->bind(convert_SDL_modifier(keyboard_modifiers)));
- } else if (c) {
+ } else {
// normal bind
core::cmd() << key->bind(convert_SDL_modifier(keyboard_modifiers)) << "\n";
}
diff --git a/src/client/keyboard.cc b/src/client/keyboard.cc
index b4b0e3a..a29b601 100644
--- a/src/client/keyboard.cc
+++ b/src/client/keyboard.cc
@@ -30,8 +30,7 @@ Keyboard::Keyboard()
// ------------------ ACTIONS
- // note: actions should be state keys and not use key repeat
- // FIXME: thruster should be a state key
+ // FIXME actions should be state keys and not use key repeat
add_action("+left", Action::None, "rotate left");
add_action("+right", Action::None, "rotate right");
@@ -57,13 +56,17 @@ Keyboard::Keyboard()
add_action("+control", Action::None, "enable mouse control while pressed");
+ // TODO the @ is a hack for functions that take the current entity as param
+
+ add_action("@dock", Action::None, "send docking request to target");
+
// ------------------ KEYS
Key *key = 0;
add_key("backspace", SDLK_BACKSPACE);
add_key("tab", SDLK_TAB, 0, "impulse");
add_key("clear", SDLK_CLEAR);
- key = add_key("enter", SDLK_RETURN);
+ key = add_key("enter", SDLK_RETURN, 0, "ui_chat");
key->assign(Key::Alt, "toggle r_fullscreen");
add_key("pause", SDLK_PAUSE);
add_key("esc", SDLK_ESCAPE);
@@ -147,13 +150,13 @@ Keyboard::Keyboard()
add_key("kp4", SDLK_KP4, 0, "+left");
add_key("kp5", SDLK_KP5);
add_key("kp6", SDLK_KP6, 0, "+right");
- add_key("kp7", SDLK_KP7);
+ add_key("kp7", SDLK_KP7, 0, "+rollleft");
add_key("kp8", SDLK_KP8, 0, "+down");
- add_key("kp9", SDLK_KP9);
+ add_key("kp9", SDLK_KP9, 0, "+rollright");
add_key("kpperiod", SDLK_KP_PERIOD, '.');
- add_key("kpdiv", SDLK_KP_DIVIDE, '/', "+rollleft");
- add_key("kpmul", SDLK_KP_MULTIPLY, '*', "+rollright");
+ add_key("kpdiv", SDLK_KP_DIVIDE, '/');
+ add_key("kpmul", SDLK_KP_MULTIPLY, '*');
add_key("kpmin", SDLK_KP_MINUS, '-', "+thrustdown");
add_key("kpplus", SDLK_KP_PLUS, '+', "+thrustup");
add_key("kpenter", SDLK_KP_ENTER, '\n', "ui_chat");
@@ -172,7 +175,7 @@ Keyboard::Keyboard()
add_key("f1", SDLK_F1);
add_key("f2", SDLK_F2);
- add_key("f3", SDLK_F3);
+ add_key("f3", SDLK_F3, 0, "@dock");
key = add_key("f4", SDLK_F4);
#ifdef _WIN32
key->assign(Key::Alt, "quit");