1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2017 - Daniel De Matteis
* Copyright (C) 2016-2019 - Andrés Suárez
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _INPUT_REMAPPING_H
#define _INPUT_REMAPPING_H
#include <stdint.h>
#include <stddef.h>
#include <boolean.h>
#include <retro_common_api.h>
#include "input_defines.h"
#include "input_types.h"
RETRO_BEGIN_DECLS
/**
* Loads a remap file from disk to memory.
*
* @param data Path to config file.
*
* @return true (1) if successful, otherwise false (0).
**/
bool input_remapping_load_file(void *data, const char *path);
/**
* Saves remapping values to file.
*
* @param path Path to remapping file.
*
* @return true (1) if successful, otherwise false (0).
**/
bool input_remapping_save_file(const char *path);
/**
* Caches any global configuration settings that should not be overwritten by
* input remap changes made while content is running. Must be called on each
* core init.
*/
void input_remapping_cache_global_config(void);
/**
* Restores any global configuration settings that were cached on the last core
* init if INP_FLAG_REMAPPING_CACHE_ACTIVE is set.
* Must be called on core deinitialization.
*
* @param clear_cache If true, function becomes a NOOP until the next time
* `input_remapping_cache_global_config()` is called, and
* INP_FLAG_REMAPPING_CACHE_ACTIVE is set.
* @param restore_analog_dpad_mode Treat 'Analog to Digital Type' like a regular setting,
* meaning this should be false when we're not using any
* remap file so its value is saved globally on close/quit,
* and it should be true when we're using a remap or if
* we're resetting settings, to restore its global value.
*/
void input_remapping_restore_global_config(bool clear_cache, bool restore_analog_dpad_mode);
/**
* Must be called whenever `settings->uints.input_remap_ports` is modified.
*/
void input_remapping_update_port_map(void);
/**
* Frees runloop_st->name.remapfile and sets these runloop_state flags to false:
* remaps_core_active, remaps_content_dir_active, and remaps_game_active.
*
* @param save_remap If true, current remap settings will be saved to
* runloop_st->name.remapfile before performing
* deinitialisation.
*/
void input_remapping_deinit(bool save_remap);
/**
* Used to set the default mapping values within the `settings` struct
* @param clear_cache This value is passed to
* `input_remapping_restore_global_config()`. Please see
* the documentation for that function for details.
*/
void input_remapping_set_defaults(bool clear_cache);
/**
* Checks `input_config_bind_map` for the requested `input_bind_map`, and if
* the bind has been registered, returns its base.
*
* @param index
*
* @return the contents of the meta field, or NULL if there is no matching bind
*/
const char *input_config_bind_map_get_base(unsigned bind_index);
/**
* Checks `input_config_bind_map` for the requested `input_bind_map`, and if
* the bind has been registered, returns the value of its meta binds field.
*
* @param index
*
* @return the contents of the meta field, or 0 if there is no matching bind
*/
unsigned input_config_bind_map_get_meta(unsigned bind_index);
/**
* Checks `input_config_bind_map` for the requested `input_bind_map`, and if
* the bind has been registered, returns a pointer to its description field.
*
* @param index
*
* @return the contents of the description field, or NULL if there is no
* matching bind
*/
const char *input_config_bind_map_get_desc(unsigned index);
/**
* Checks `input_config_bind_map` for the requested `input_bind_map`, and if
* the bind has been registered, returns the value of its retro_key field.
*
* @param index
*
* @return the value of the retro_key field, or 0 if there is no matching bind
*/
uint8_t input_config_bind_map_get_retro_key(unsigned index);
/**
* Parses the string representation of a retro_key struct
*
* @param str String to parse.
*
* @return Key identifier.
**/
enum retro_key input_config_translate_str_to_rk(const char *str, size_t len);
/**
* Searches for a string among the "base" fields of the list of binds.
*
* @param str String to search for among the binds
*
* @return Bind index value on success or RARCH_BIND_LIST_END if not found.
**/
unsigned input_config_translate_str_to_bind_id(const char *str);
/**
* Parse the bind data of an object of config_file_t.
*
* @param data An object of type config_file_t. We assume it is passed as a
* void pointer like this to avoid including config_file.h.
**/
void config_read_keybinds_conf(void *data);
/**
* Apply autoconfig binds to the indicated control port.
*
* @param port
* @param data An object of type config_file_t. We assume it is passed as a
* void pointer like this to avoid including config_file.h.
*/
void input_config_set_autoconfig_binds(unsigned port, void *data);
void input_mapper_reset(void *data);
RETRO_END_DECLS
#endif
|