mirror of
https://github.com/libretro/RetroArch
synced 2025-03-26 02:37:23 +00:00
allow remapping of analog axis, only works axis to axis
This commit is contained in:
parent
16a80243aa
commit
0cd7562fb8
@ -43,20 +43,29 @@ bool input_remapping_load_file(const char *path)
|
||||
for (i = 0; i < MAX_USERS; i++)
|
||||
{
|
||||
char buf[64];
|
||||
char key_ident[RARCH_FIRST_META_KEY][128];
|
||||
char key_strings[RARCH_FIRST_META_KEY][128] = { "b", "y", "select", "start",
|
||||
"up", "down", "left", "right", "a", "x", "l", "r", "l2", "r2", "l3", "r3", "l_x_plus", "l_x_minus", "l_y_plus", "l_y_minus", "r_x_plus", "r_x_minus", "r_y_plus", "r_y_minus"};
|
||||
char key_ident[RARCH_FIRST_CUSTOM_BIND + 4][128];
|
||||
char key_strings[RARCH_FIRST_CUSTOM_BIND + 4][128] = { "b", "y", "select", "start",
|
||||
"up", "down", "left", "right", "a", "x", "l", "r", "l2", "r2", "l3", "r3", "l_x", "l_y", "r_x", "r_y" };
|
||||
|
||||
snprintf(buf, sizeof(buf), "input_player%u", i + 1);
|
||||
|
||||
for (j = 0; j < RARCH_FIRST_META_KEY; j++)
|
||||
for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 4; j++)
|
||||
{
|
||||
int key_remap = -1;
|
||||
|
||||
snprintf(key_ident[j], sizeof(key_ident[j]), "%s_%s", buf, key_strings[j]);
|
||||
if (config_get_int(conf, key_ident[j], &key_remap))
|
||||
if (config_get_int(conf, key_ident[j], &key_remap) && key_remap < RARCH_FIRST_CUSTOM_BIND)
|
||||
settings->input.remap_ids[i][j] = key_remap;
|
||||
}
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
int key_remap = -1;
|
||||
|
||||
snprintf(key_ident[RARCH_FIRST_CUSTOM_BIND + j], sizeof(key_ident[RARCH_FIRST_CUSTOM_BIND + j]), "%s_%s", buf, key_strings[RARCH_FIRST_CUSTOM_BIND + j]);
|
||||
if (config_get_int(conf, key_ident[RARCH_FIRST_CUSTOM_BIND + j], &key_remap) && key_remap < 4)
|
||||
settings->input.remap_ids[i][RARCH_FIRST_CUSTOM_BIND + j] = key_remap;
|
||||
}
|
||||
}
|
||||
|
||||
config_file_free(conf);
|
||||
@ -97,13 +106,13 @@ bool input_remapping_save_file(const char *path)
|
||||
|
||||
for (i = 0; i < settings->input.max_users; i++)
|
||||
{
|
||||
char key_ident[RARCH_FIRST_META_KEY][128];
|
||||
char key_strings[RARCH_FIRST_META_KEY][128] = { "b", "y", "select", "start",
|
||||
"up", "down", "left", "right", "a", "x", "l", "r", "l2", "r2", "l3", "r3", "l_x_plus" , "l_x_minus", "l_y_plus", "l_y_minus", "r_x_plus", "r_x_minus", "r_y_plus", "r_y_minus" };
|
||||
char key_ident[RARCH_FIRST_CUSTOM_BIND + 4][128];
|
||||
char key_strings[RARCH_FIRST_CUSTOM_BIND + 4][128] = { "b", "y", "select", "start",
|
||||
"up", "down", "left", "right", "a", "x", "l", "r", "l2", "r2", "l3", "r3", "l_x", "l_y", "r_x", "r_y" };
|
||||
|
||||
snprintf(buf, sizeof(buf), "input_player%u", i + 1);
|
||||
|
||||
for (j = 0; j < RARCH_FIRST_META_KEY; j++)
|
||||
for (j = 0; j < RARCH_FIRST_CUSTOM_BIND + 4; j++)
|
||||
{
|
||||
snprintf(key_ident[j], sizeof(key_ident[j]), "%s_%s", buf, key_strings[j]);
|
||||
config_set_int(conf, key_ident[j], settings->input.remap_ids[i][j]);
|
||||
@ -123,8 +132,10 @@ void input_remapping_set_defaults(void)
|
||||
|
||||
for (i = 0; i < MAX_USERS; i++)
|
||||
{
|
||||
for (j = 0; j < RARCH_BIND_LIST_END; j++)
|
||||
for (j = 0; j < RARCH_FIRST_CUSTOM_BIND; j++)
|
||||
settings->input.remap_ids[i][j] = settings->input.binds[i][j].id;
|
||||
for (j = 0; j < 4; j++)
|
||||
settings->input.remap_ids[i][RARCH_FIRST_CUSTOM_BIND + j] = j;
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,6 +144,20 @@ void input_remapping_state(unsigned port,
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (*id < RARCH_FIRST_META_KEY)
|
||||
switch (*device)
|
||||
{
|
||||
case RETRO_DEVICE_JOYPAD:
|
||||
if (*id < RARCH_FIRST_CUSTOM_BIND)
|
||||
*id = settings->input.remap_ids[port][*id];
|
||||
break;
|
||||
case RETRO_DEVICE_ANALOG:
|
||||
if (*idx < 2 && *id < 2)
|
||||
{
|
||||
unsigned new_id = RARCH_FIRST_CUSTOM_BIND + (*idx * 2 + *id);
|
||||
new_id = settings->input.remap_ids[port][new_id];
|
||||
*idx = (new_id & 2) >> 1;
|
||||
*id = new_id & 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,10 @@
|
||||
#define RETRO_LBL_JOYPAD_L3 "RetroPad L3 Button"
|
||||
#define RETRO_LBL_JOYPAD_R3 "RetroPad R3 Button"
|
||||
#define RETRO_LBL_TURBO_ENABLE "Turbo Enable"
|
||||
#define RETRO_LBL_ANALOG_LEFT_X "Left Analog X"
|
||||
#define RETRO_LBL_ANALOG_LEFT_Y "Left Analog Y"
|
||||
#define RETRO_LBL_ANALOG_RIGHT_X "Right Analog X"
|
||||
#define RETRO_LBL_ANALOG_RIGHT_Y "Right Analog Y"
|
||||
#define RETRO_LBL_ANALOG_LEFT_X_PLUS "Left Analog X +"
|
||||
#define RETRO_LBL_ANALOG_LEFT_X_MINUS "Left Analog X -"
|
||||
#define RETRO_LBL_ANALOG_LEFT_Y_PLUS "Left Analog Y +"
|
||||
|
@ -1523,11 +1523,16 @@ static int menu_displaylist_parse_options_remappings(menu_displaylist_info_t *in
|
||||
|
||||
for (p = 0; p < settings->input.max_users; p++)
|
||||
{
|
||||
for (retro_id = 0; retro_id < RARCH_FIRST_META_KEY; retro_id++)
|
||||
for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND + 4; retro_id++)
|
||||
{
|
||||
char desc_label[64];
|
||||
unsigned user = p + 1;
|
||||
const char *description = global->system.input_desc_btn[p][retro_id];
|
||||
unsigned desc_offset = retro_id;
|
||||
|
||||
if (desc_offset >= RARCH_FIRST_CUSTOM_BIND)
|
||||
desc_offset = RARCH_FIRST_CUSTOM_BIND + (desc_offset - RARCH_FIRST_CUSTOM_BIND) * 2;
|
||||
|
||||
const char *description = global->system.input_desc_btn[p][desc_offset];
|
||||
|
||||
if (!description)
|
||||
continue;
|
||||
|
@ -86,8 +86,8 @@ static int action_left_input_desc(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
unsigned inp_desc_index_offset = type - MENU_SETTINGS_INPUT_DESC_BEGIN;
|
||||
unsigned inp_desc_user = inp_desc_index_offset / RARCH_FIRST_META_KEY;
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset - (inp_desc_user * RARCH_FIRST_META_KEY);
|
||||
unsigned inp_desc_user = inp_desc_index_offset / (RARCH_FIRST_CUSTOM_BIND + 4);
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset - (inp_desc_user * (RARCH_FIRST_CUSTOM_BIND + 4));
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset] > 0)
|
||||
|
@ -21,6 +21,14 @@
|
||||
|
||||
#include "../performance.h"
|
||||
#include "../settings.h"
|
||||
#include "../intl/intl.h"
|
||||
|
||||
const char axis_labels[4][128] = {
|
||||
RETRO_LBL_ANALOG_LEFT_X,
|
||||
RETRO_LBL_ANALOG_LEFT_Y,
|
||||
RETRO_LBL_ANALOG_RIGHT_X,
|
||||
RETRO_LBL_ANALOG_RIGHT_Y
|
||||
};
|
||||
|
||||
static void menu_action_setting_disp_set_label_cheat_num_passes(
|
||||
file_list_t* list,
|
||||
@ -346,14 +354,19 @@ static void menu_action_setting_disp_set_label_input_desc(
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned inp_desc_index_offset = type - MENU_SETTINGS_INPUT_DESC_BEGIN;
|
||||
unsigned inp_desc_user = inp_desc_index_offset /
|
||||
RARCH_FIRST_META_KEY;
|
||||
(RARCH_FIRST_CUSTOM_BIND + 4);
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset -
|
||||
(inp_desc_user * RARCH_FIRST_META_KEY);
|
||||
(inp_desc_user * (RARCH_FIRST_CUSTOM_BIND + 4));
|
||||
unsigned remap_id = settings->input.remap_ids
|
||||
[inp_desc_user][inp_desc_button_index_offset];
|
||||
|
||||
if (inp_desc_button_index_offset < RARCH_FIRST_CUSTOM_BIND)
|
||||
snprintf(type_str, type_str_size, "%s",
|
||||
settings->input.binds[inp_desc_user][remap_id].desc);
|
||||
else
|
||||
snprintf(type_str, type_str_size, "%s",
|
||||
axis_labels[remap_id]);
|
||||
|
||||
*w = 19;
|
||||
strlcpy(path_buf, path, path_buf_size);
|
||||
}
|
||||
|
@ -85,12 +85,20 @@ static int action_right_input_desc(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
unsigned inp_desc_index_offset = type - MENU_SETTINGS_INPUT_DESC_BEGIN;
|
||||
unsigned inp_desc_user = inp_desc_index_offset / RARCH_FIRST_META_KEY;
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset - (inp_desc_user * RARCH_FIRST_META_KEY);
|
||||
unsigned inp_desc_user = inp_desc_index_offset / (RARCH_FIRST_CUSTOM_BIND + 4);
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset - (inp_desc_user * (RARCH_FIRST_CUSTOM_BIND + 4));
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset] < RARCH_FIRST_META_KEY)
|
||||
if (inp_desc_button_index_offset < RARCH_FIRST_CUSTOM_BIND)
|
||||
{
|
||||
if (settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset] < RARCH_FIRST_CUSTOM_BIND - 1)
|
||||
settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset] < 4 - 1)
|
||||
settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset]++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -62,13 +62,17 @@ static int action_start_input_desc(unsigned type, const char *label)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned inp_desc_index_offset = type - MENU_SETTINGS_INPUT_DESC_BEGIN;
|
||||
unsigned inp_desc_user = inp_desc_index_offset / RARCH_FIRST_META_KEY;
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset - (inp_desc_user * RARCH_FIRST_META_KEY);
|
||||
unsigned inp_desc_user = inp_desc_index_offset / (RARCH_FIRST_CUSTOM_BIND + 4);
|
||||
unsigned inp_desc_button_index_offset = inp_desc_index_offset - (inp_desc_user * (RARCH_FIRST_CUSTOM_BIND + 4));
|
||||
|
||||
(void)label;
|
||||
|
||||
if (inp_desc_button_index_offset < RARCH_FIRST_CUSTOM_BIND)
|
||||
settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset] =
|
||||
settings->input.binds[inp_desc_user][inp_desc_button_index_offset].id;
|
||||
else
|
||||
settings->input.remap_ids[inp_desc_user][inp_desc_button_index_offset] =
|
||||
inp_desc_button_index_offset - RARCH_FIRST_CUSTOM_BIND;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user