mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-23 11:18:25 +00:00
Merge pull request #4389 from ShiftyAxel/qnx-bb10
Updated BB10/QNX Support
This commit is contained in:
commit
79bfcb19ce
107
config.def.h
107
config.def.h
@ -25,6 +25,8 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "config.def.keybinds.h"
|
||||
|
||||
enum video_driver_enum
|
||||
{
|
||||
VIDEO_GL = 0,
|
||||
@ -391,7 +393,7 @@ enum record_driver_enum
|
||||
|
||||
#if defined(XENON) || defined(_XBOX360) || defined(__CELLOS_LV2__)
|
||||
#define DEFAULT_ASPECT_RATIO 1.7778f
|
||||
#elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID) || defined(__QNX__)
|
||||
#elif defined(_XBOX1) || defined(GEKKO) || defined(ANDROID)
|
||||
#define DEFAULT_ASPECT_RATIO 1.3333f
|
||||
#else
|
||||
#define DEFAULT_ASPECT_RATIO -1.0f
|
||||
@ -913,6 +915,8 @@ static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/androi
|
||||
#else
|
||||
static char buildbot_server_url[] = "";
|
||||
#endif
|
||||
#elif defined(__QNX__)
|
||||
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/blackberry/latest/";
|
||||
#elif defined(IOS)
|
||||
static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/apple/ios/latest/";
|
||||
#elif defined(OSX)
|
||||
@ -943,105 +947,4 @@ static char buildbot_server_url[] = "";
|
||||
|
||||
static char buildbot_assets_server_url[] = "http://buildbot.libretro.com/assets/";
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
|
||||
/* User 1 */
|
||||
static const struct retro_keybind retro_keybinds_1[] = {
|
||||
/* | RetroPad button | enum | keyboard key | js btn | js axis | */
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_z, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_a, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_RSHIFT, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_RETURN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UP, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_x, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_s, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_q, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_w, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_l, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_f, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_ESCAPE, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_r, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_o, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_p, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_k, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_h, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_m, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_n, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_y, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_t, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_u, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_F8, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_e, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_F11, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_SCROLLOCK, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_F1, NO_BTN, 0, AXIS_NONE },
|
||||
};
|
||||
|
||||
/* Users 2 to MAX_USERS */
|
||||
static const struct retro_keybind retro_keybinds_rest[] = {
|
||||
/* | RetroPad button | desc | keyboard key | js btn | js axis | */
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
186
config.def.keybinds.h
Normal file
186
config.def.keybinds.h
Normal file
@ -0,0 +1,186 @@
|
||||
/* RetroArch - A frontend for libretro.
|
||||
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
||||
* Copyright (C) 2011-2016 - Daniel De Matteis
|
||||
* Copyright (C) 2016 - Brad Parker
|
||||
*
|
||||
* 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 __CONFIG_DEF_KEYBINDS_H
|
||||
#define __CONFIG_DEF_KEYBINDS_H
|
||||
|
||||
#ifndef IS_SALAMANDER
|
||||
|
||||
/* User 1 */
|
||||
static const struct retro_keybind retro_keybinds_1[] = {
|
||||
/* | RetroPad button | enum | keyboard key | js btn | js axis | */
|
||||
#ifdef __QNX__
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_k, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_i, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_v, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_b, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_e, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_s, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_w, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_d, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_l, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_o, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_f, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_j, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_r, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_u, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_g, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_h, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_SPACE, NO_BTN, 0, AXIS_NONE },
|
||||
#else
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_z, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_a, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_RSHIFT, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_RETURN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UP, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_DOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_LEFT, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_RIGHT, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_x, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_s, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_q, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_w, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FAST_FORWARD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY, RETROK_SPACE, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FAST_FORWARD_HOLD_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,RETROK_l, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_LOAD_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_LOAD_STATE_KEY, RETROK_F4, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SAVE_STATE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_SAVE_STATE_KEY, RETROK_F2, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FULLSCREEN_TOGGLE_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_FULLSCREEN_TOGGLE_KEY,RETROK_f, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_QUIT_KEY, MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY, RETROK_ESCAPE, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_STATE_SLOT_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_PLUS, RETROK_F7, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_STATE_SLOT_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_STATE_SLOT_MINUS, RETROK_F6, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_REWIND, MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND, RETROK_r, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MOVIE_RECORD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MOVIE_RECORD_TOGGLE, RETROK_o, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_PAUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_PAUSE_TOGGLE, RETROK_p, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_FRAMEADVANCE, MENU_ENUM_LABEL_VALUE_INPUT_META_FRAMEADVANCE, RETROK_k, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_RESET, MENU_ENUM_LABEL_VALUE_INPUT_META_RESET, RETROK_h, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SHADER_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_NEXT, RETROK_m, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SHADER_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_SHADER_PREV, RETROK_n, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_INDEX_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_PLUS, RETROK_y, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_INDEX_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_INDEX_MINUS, RETROK_t, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_CHEAT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_CHEAT_TOGGLE, RETROK_u, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SCREENSHOT, MENU_ENUM_LABEL_VALUE_INPUT_META_SCREENSHOT, RETROK_F8, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MUTE, MENU_ENUM_LABEL_VALUE_INPUT_META_MUTE, RETROK_F9, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OSK, MENU_ENUM_LABEL_VALUE_INPUT_META_OSK, RETROK_F12, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_FLIP, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FLIP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_NETPLAY_GAME_WATCH, MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH, RETROK_i, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_SLOWMOTION, MENU_ENUM_LABEL_VALUE_INPUT_META_SLOWMOTION, RETROK_e, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ENABLE_HOTKEY, MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_UP, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_UP, RETROK_KP_PLUS, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_VOLUME_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_META_VOLUME_DOWN, RETROK_KP_MINUS,NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_OVERLAY_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_OVERLAY_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_EJECT_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_EJECT_TOGGLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_NEXT, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_NEXT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_DISK_PREV, MENU_ENUM_LABEL_VALUE_INPUT_META_DISK_PREV, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_GRAB_MOUSE_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GRAB_MOUSE_TOGGLE, RETROK_F11, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_GAME_FOCUS_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_GAME_FOCUS_TOGGLE, RETROK_SCROLLOCK, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_MENU_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE, RETROK_F1, NO_BTN, 0, AXIS_NONE },
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Users 2 to MAX_USERS */
|
||||
static const struct retro_keybind retro_keybinds_rest[] = {
|
||||
/* | RetroPad button | desc | keyboard key | js btn | js axis | */
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_B, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_B, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_Y, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_Y, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_SELECT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_SELECT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_START, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_START, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_UP, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_UP, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_DOWN, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_DOWN, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_LEFT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_LEFT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_RIGHT, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_RIGHT, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_A, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_A, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_X, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_X, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R2, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R2, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_L3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_L3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RETRO_DEVICE_ID_JOYPAD_R3, MENU_ENUM_LABEL_VALUE_INPUT_JOYPAD_R3, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
|
||||
{ true, RARCH_ANALOG_LEFT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_LEFT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_LEFT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_X_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_X_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_PLUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_PLUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_ANALOG_RIGHT_Y_MINUS, MENU_ENUM_LABEL_VALUE_INPUT_ANALOG_RIGHT_Y_MINUS, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
{ true, RARCH_TURBO_ENABLE, MENU_ENUM_LABEL_VALUE_INPUT_TURBO_ENABLE, RETROK_UNKNOWN, NO_BTN, 0, AXIS_NONE },
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
@ -24,6 +24,10 @@
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#endif
|
||||
|
||||
#ifdef __QNX__
|
||||
#include <libgen.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <boolean.h>
|
||||
#include <string.h>
|
||||
@ -242,6 +246,15 @@ void fill_pathname_application_path(char *s, size_t len)
|
||||
return;
|
||||
}
|
||||
}
|
||||
#elif defined(__QNX__)
|
||||
char *buff = malloc(len);
|
||||
|
||||
if(_cmdname(buff))
|
||||
{
|
||||
strlcpy(s, buff, len);
|
||||
}
|
||||
|
||||
free(buff);
|
||||
#else
|
||||
{
|
||||
pid_t pid;
|
||||
|
@ -17,10 +17,13 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <libgen.h>
|
||||
#include <dirent.h>
|
||||
|
||||
#include <boolean.h>
|
||||
|
||||
#include <bps/bps.h>
|
||||
#include <packageinfo.h>
|
||||
|
||||
#include "../../defaults.h"
|
||||
#include "../../dynamic.h"
|
||||
@ -49,18 +52,122 @@ static int frontend_qnx_get_rating(void)
|
||||
static void frontend_qnx_get_environment_settings(int *argc, char *argv[],
|
||||
void *data, void *params_data)
|
||||
{
|
||||
fill_pathname_join(g_defaults.path.config, "app/native",
|
||||
file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(g_defaults.path.config));
|
||||
fill_pathname_join(g_defaults.dir.shader, "app/native",
|
||||
"shaders_glsl", sizeof(g_defaults.dir.shader));
|
||||
fill_pathname_join(g_defaults.dir.overlay, "app/native",
|
||||
"overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.core, "app/native",
|
||||
"lib", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.core_info, "app/native",
|
||||
char assets_path[PATH_MAX] = {0};
|
||||
char data_path[PATH_MAX] = {0};
|
||||
char user_path[PATH_MAX] = {0};
|
||||
char tmp_path[PATH_MAX] = {0};
|
||||
|
||||
char workdir[PATH_MAX] = {0};
|
||||
getcwd(workdir, sizeof(workdir));
|
||||
|
||||
if(!string_is_empty(workdir))
|
||||
{
|
||||
snprintf(assets_path, sizeof(data_path),
|
||||
"%s/app/native/assets", workdir);
|
||||
snprintf(data_path, sizeof(data_path),
|
||||
"%s/data", workdir);
|
||||
snprintf(user_path, sizeof(user_path),
|
||||
"%s/shared/misc/retroarch", workdir);
|
||||
snprintf(tmp_path, sizeof(user_path),
|
||||
"%s/tmp", workdir);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(assets_path, sizeof(data_path), "app/native/assets");
|
||||
snprintf(data_path, sizeof(data_path), "data");
|
||||
snprintf(user_path, sizeof(user_path), "shared/misc/retroarch");
|
||||
snprintf(tmp_path, sizeof(user_path), "tmp");
|
||||
}
|
||||
|
||||
// app data
|
||||
fill_pathname_join(g_defaults.dir.core, data_path,
|
||||
"cores", sizeof(g_defaults.dir.core));
|
||||
fill_pathname_join(g_defaults.dir.assets, data_path,
|
||||
"assets", sizeof(g_defaults.dir.assets));
|
||||
fill_pathname_join(g_defaults.dir.autoconfig, data_path,
|
||||
"autoconfig", sizeof(g_defaults.dir.autoconfig));
|
||||
fill_pathname_join(g_defaults.dir.cursor, data_path,
|
||||
"database/cursors", sizeof(g_defaults.dir.cursor));
|
||||
fill_pathname_join(g_defaults.dir.database, data_path,
|
||||
"database/rdb", sizeof(g_defaults.dir.database));
|
||||
fill_pathname_join(g_defaults.dir.core_info, data_path,
|
||||
"info", sizeof(g_defaults.dir.core_info));
|
||||
fill_pathname_join(g_defaults.dir.playlist, "app/native",
|
||||
fill_pathname_join(g_defaults.dir.overlay, data_path,
|
||||
"overlays", sizeof(g_defaults.dir.overlay));
|
||||
fill_pathname_join(g_defaults.dir.shader, data_path,
|
||||
"shaders", sizeof(g_defaults.dir.shader));
|
||||
|
||||
// user data
|
||||
fill_pathname_join(g_defaults.dir.cheats, user_path,
|
||||
"cheats", sizeof(g_defaults.dir.cheats));
|
||||
fill_pathname_join(g_defaults.dir.menu_config, user_path,
|
||||
"config", sizeof(g_defaults.dir.menu_config));
|
||||
fill_pathname_join(g_defaults.dir.menu_content, user_path,
|
||||
"content", sizeof(g_defaults.dir.menu_content));
|
||||
fill_pathname_join(g_defaults.dir.core_assets, user_path,
|
||||
"downloads", sizeof(g_defaults.dir.core_assets));
|
||||
fill_pathname_join(g_defaults.dir.audio_filter, user_path,
|
||||
"filters/audio", sizeof(g_defaults.dir.audio_filter));
|
||||
fill_pathname_join(g_defaults.dir.video_filter, user_path,
|
||||
"filters/video", sizeof(g_defaults.dir.video_filter));
|
||||
fill_pathname_join(g_defaults.dir.playlist, user_path,
|
||||
"playlists", sizeof(g_defaults.dir.playlist));
|
||||
fill_pathname_join(g_defaults.dir.remap, user_path,
|
||||
"remaps", sizeof(g_defaults.dir.remap));
|
||||
fill_pathname_join(g_defaults.dir.sram, user_path,
|
||||
"saves", sizeof(g_defaults.dir.sram));
|
||||
fill_pathname_join(g_defaults.dir.screenshot, user_path,
|
||||
"screenshots", sizeof(g_defaults.dir.screenshot));
|
||||
fill_pathname_join(g_defaults.dir.savestate, user_path,
|
||||
"states", sizeof(g_defaults.dir.savestate));
|
||||
fill_pathname_join(g_defaults.dir.system, user_path,
|
||||
"system", sizeof(g_defaults.dir.system));
|
||||
fill_pathname_join(g_defaults.dir.thumbnails, user_path,
|
||||
"thumbnails", sizeof(g_defaults.dir.thumbnails));
|
||||
fill_pathname_join(g_defaults.dir.wallpapers, user_path,
|
||||
"wallpapers", sizeof(g_defaults.dir.wallpapers));
|
||||
|
||||
// tmp
|
||||
strlcpy(g_defaults.dir.cache, tmp_path, sizeof(g_defaults.dir.cache));
|
||||
|
||||
// history and main config
|
||||
strlcpy(g_defaults.dir.content_history,
|
||||
user_path, sizeof(g_defaults.dir.content_history));
|
||||
fill_pathname_join(g_defaults.path.config, user_path,
|
||||
file_path_str(FILE_PATH_MAIN_CONFIG), sizeof(g_defaults.path.config));
|
||||
|
||||
// bundle copy
|
||||
char data_assets_path[PATH_MAX] = {0};
|
||||
sprintf(data_assets_path, "%s/%s", data_path, "assets");
|
||||
if(!path_file_exists(data_assets_path))
|
||||
{
|
||||
RARCH_LOG( "Copying application assets to data directory...\n" );
|
||||
|
||||
char copy_command[PATH_MAX] = {0};
|
||||
sprintf(copy_command, "cp -r %s/. %s", assets_path, data_path);
|
||||
|
||||
if(system(copy_command) == -1) {
|
||||
RARCH_LOG( "Asset copy failed: Shell could not be run.\n" );
|
||||
} else {
|
||||
RARCH_LOG( "Asset copy successful.\n");
|
||||
}
|
||||
}
|
||||
|
||||
// create user data dirs
|
||||
path_mkdir(g_defaults.dir.cheats);
|
||||
path_mkdir(g_defaults.dir.menu_config);
|
||||
path_mkdir(g_defaults.dir.menu_content);
|
||||
path_mkdir(g_defaults.dir.core_assets);
|
||||
path_mkdir(g_defaults.dir.playlist);
|
||||
path_mkdir(g_defaults.dir.remap);
|
||||
path_mkdir(g_defaults.dir.savestate);
|
||||
path_mkdir(g_defaults.dir.screenshot);
|
||||
path_mkdir(g_defaults.dir.sram);
|
||||
path_mkdir(g_defaults.dir.system);
|
||||
path_mkdir(g_defaults.dir.thumbnails);
|
||||
|
||||
// set glui as default menu
|
||||
snprintf(g_defaults.settings.menu, sizeof(g_defaults.settings.menu), "glui");
|
||||
}
|
||||
|
||||
enum frontend_architecture frontend_qnx_get_architecture(void)
|
||||
|
@ -44,18 +44,54 @@ void egl_report_error(void)
|
||||
str = "EGL_SUCCESS";
|
||||
break;
|
||||
|
||||
case EGL_BAD_DISPLAY:
|
||||
str = "EGL_BAD_DISPLAY";
|
||||
case EGL_BAD_ACCESS:
|
||||
str = "EGL_BAD_ACCESS";
|
||||
break;
|
||||
|
||||
case EGL_BAD_SURFACE:
|
||||
str = "EGL_BAD_SURFACE";
|
||||
case EGL_BAD_ALLOC:
|
||||
str = "EGL_BAD_ALLOC";
|
||||
break;
|
||||
|
||||
case EGL_BAD_ATTRIBUTE:
|
||||
str = "EGL_BAD_ATTRIBUTE";
|
||||
break;
|
||||
|
||||
case EGL_BAD_CONFIG:
|
||||
str = "EGL_BAD_CONFIG";
|
||||
break;
|
||||
|
||||
case EGL_BAD_CONTEXT:
|
||||
str = "EGL_BAD_CONTEXT";
|
||||
break;
|
||||
|
||||
case EGL_BAD_CURRENT_SURFACE:
|
||||
str = "EGL_BAD_CURRENT_SURFACE";
|
||||
break;
|
||||
|
||||
case EGL_BAD_DISPLAY:
|
||||
str = "EGL_BAD_DISPLAY";
|
||||
break;
|
||||
|
||||
case EGL_BAD_MATCH:
|
||||
str = "EGL_BAD_MATCH";
|
||||
break;
|
||||
|
||||
case EGL_BAD_NATIVE_PIXMAP:
|
||||
str = "EGL_BAD_NATIVE_PIXMAP";
|
||||
break;
|
||||
|
||||
case EGL_BAD_NATIVE_WINDOW:
|
||||
str = "EGL_BAD_NATIVE_WINDOW";
|
||||
break;
|
||||
|
||||
case EGL_BAD_PARAMETER:
|
||||
str = "EGL_BAD_PARAMETER";
|
||||
break;
|
||||
|
||||
case EGL_BAD_SURFACE:
|
||||
str = "EGL_BAD_SURFACE";
|
||||
break;
|
||||
|
||||
default:
|
||||
str = "Unknown";
|
||||
break;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* RetroArch - A frontend for libretro.
|
||||
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
||||
* Copyright (C) 2011-2016 - Daniel De Matteis
|
||||
*
|
||||
*
|
||||
* 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.
|
||||
@ -26,8 +26,10 @@
|
||||
#include "../../config.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OPENGLES
|
||||
#ifdef HAVE_OPENGLES2
|
||||
#include <GLES2/gl2.h>
|
||||
#elif HAVE_OPENGLES3
|
||||
#include <GLES3/gl3.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_EGL
|
||||
@ -47,13 +49,13 @@
|
||||
#define WINDOW_BUFFERS 2
|
||||
|
||||
screen_context_t screen_ctx;
|
||||
screen_window_t screen_win;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
#ifdef HAVE_EGL
|
||||
egl_ctx_data_t egl;
|
||||
#endif
|
||||
screen_window_t screen_win;
|
||||
screen_display_t screen_disp;
|
||||
bool resize;
|
||||
} qnx_ctx_data_t;
|
||||
@ -66,7 +68,6 @@ static void gfx_ctx_qnx_destroy(void *data)
|
||||
egl_destroy(&qnx->egl);
|
||||
#endif
|
||||
|
||||
qnx->resize = false;
|
||||
free(data);
|
||||
}
|
||||
|
||||
@ -75,25 +76,33 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
EGLint n;
|
||||
EGLint major, minor;
|
||||
EGLint context_attributes[] = {
|
||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||
#ifdef HAVE_OPENGLES2
|
||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||
#elif HAVE_OPENGLES3
|
||||
EGL_CONTEXT_CLIENT_VERSION, 3,
|
||||
#endif
|
||||
EGL_NONE
|
||||
};
|
||||
|
||||
const EGLint attribs[] = {
|
||||
#ifdef HAVE_OPENGLES2
|
||||
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||
#elif HAVE_OPENGLES3
|
||||
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT_KHR,
|
||||
#endif
|
||||
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
|
||||
EGL_BLUE_SIZE, 8,
|
||||
EGL_GREEN_SIZE, 8,
|
||||
EGL_RED_SIZE, 8,
|
||||
EGL_NONE
|
||||
};
|
||||
int angle, size[2];
|
||||
int usage, format = SCREEN_FORMAT_RGBX8888;
|
||||
|
||||
qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)calloc(1, sizeof(*qnx));
|
||||
|
||||
if (!qnx)
|
||||
goto screen_error;
|
||||
|
||||
/* Create a screen context that will be used to
|
||||
/* Create a screen context that will be used to
|
||||
* create an EGL surface to receive libscreen events */
|
||||
|
||||
RARCH_LOG("Initializing screen context...\n");
|
||||
@ -120,7 +129,6 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
}
|
||||
}
|
||||
|
||||
usage = SCREEN_USAGE_OPENGL_ES2 | SCREEN_USAGE_ROTATION;
|
||||
|
||||
#ifdef HAVE_EGL
|
||||
if (!egl_init_context(&qnx->egl, EGL_DEFAULT_DISPLAY, &major, &minor,
|
||||
@ -137,30 +145,37 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
}
|
||||
#endif
|
||||
|
||||
if(!qnx->screen_win)
|
||||
if(!screen_win)
|
||||
{
|
||||
if (screen_create_window(&qnx->screen_win, screen_ctx))
|
||||
if (screen_create_window(&screen_win, screen_ctx))
|
||||
{
|
||||
RARCH_ERR("screen_create_window failed:.\n");
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
if (screen_set_window_property_iv(qnx->screen_win,
|
||||
int format = SCREEN_FORMAT_RGBX8888;
|
||||
if (screen_set_window_property_iv(screen_win,
|
||||
SCREEN_PROPERTY_FORMAT, &format))
|
||||
{
|
||||
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_FORMAT] failed.\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (screen_set_window_property_iv(qnx->screen_win,
|
||||
int usage;
|
||||
#ifdef HAVE_OPENGLES2
|
||||
usage = SCREEN_USAGE_OPENGL_ES2 | SCREEN_USAGE_ROTATION;
|
||||
#elif HAVE_OPENGLES3
|
||||
usage = SCREEN_USAGE_OPENGL_ES3 | SCREEN_USAGE_ROTATION;
|
||||
#endif
|
||||
if (screen_set_window_property_iv(screen_win,
|
||||
SCREEN_PROPERTY_USAGE, &usage))
|
||||
{
|
||||
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_USAGE] failed.\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (screen_get_window_property_pv(qnx->screen_win,
|
||||
if (screen_get_window_property_pv(screen_win,
|
||||
SCREEN_PROPERTY_DISPLAY, (void **)&qnx->screen_disp))
|
||||
{
|
||||
RARCH_ERR("screen_get_window_property_pv [SCREEN_PROPERTY_DISPLAY] failed.\n");
|
||||
@ -177,6 +192,8 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
}
|
||||
|
||||
#ifndef HAVE_BB10
|
||||
int angle, size[2];
|
||||
|
||||
angle = atoi(getenv("ORIENTATION"));
|
||||
|
||||
screen_display_mode_t screen_mode;
|
||||
@ -187,7 +204,7 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (screen_get_window_property_iv(qnx->screen_win,
|
||||
if (screen_get_window_property_iv(screen_win,
|
||||
SCREEN_PROPERTY_BUFFER_SIZE, size))
|
||||
{
|
||||
RARCH_ERR("screen_get_window_property_iv [SCREEN_PROPERTY_BUFFER_SIZE] failed.\n");
|
||||
@ -221,14 +238,14 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
}
|
||||
|
||||
|
||||
if (screen_set_window_property_iv(qnx->screen_win,
|
||||
if (screen_set_window_property_iv(screen_win,
|
||||
SCREEN_PROPERTY_BUFFER_SIZE, buffer_size))
|
||||
{
|
||||
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_BUFFER_SIZE] failed.\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (screen_set_window_property_iv(qnx->screen_win,
|
||||
if (screen_set_window_property_iv(screen_win,
|
||||
SCREEN_PROPERTY_ROTATION, &angle))
|
||||
{
|
||||
RARCH_ERR("screen_set_window_property_iv [SCREEN_PROPERTY_ROTATION] failed.\n");
|
||||
@ -236,13 +253,13 @@ static void *gfx_ctx_qnx_init(void *video_driver)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (screen_create_window_buffers(qnx->screen_win, WINDOW_BUFFERS))
|
||||
if (screen_create_window_buffers(screen_win, WINDOW_BUFFERS))
|
||||
{
|
||||
RARCH_ERR("screen_create_window_buffers failed.\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!egl_create_surface(&qnx->egl, qnx->screen_win))
|
||||
if (!egl_create_surface(&qnx->egl, screen_win))
|
||||
goto error;
|
||||
|
||||
return qnx;
|
||||
@ -255,6 +272,16 @@ screen_error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void gfx_ctx_qnx_get_video_size(void *data,
|
||||
unsigned *width, unsigned *height)
|
||||
{
|
||||
qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data;
|
||||
|
||||
#ifdef HAVE_EGL
|
||||
egl_get_video_size(&qnx->egl, width, height);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void gfx_ctx_qnx_check_window(void *data, bool *quit,
|
||||
bool *resize, unsigned *width, unsigned *height, unsigned frame_count)
|
||||
{
|
||||
@ -319,18 +346,18 @@ static bool gfx_ctx_qnx_set_video_mode(void *data,
|
||||
static void gfx_ctx_qnx_input_driver(void *data,
|
||||
const input_driver_t **input, void **input_data)
|
||||
{
|
||||
void *qnxinput = input_qnx.init();
|
||||
|
||||
(void)data;
|
||||
*input = NULL;
|
||||
*input_data = NULL;
|
||||
|
||||
*input = qnxinput ? &input_qnx : NULL;
|
||||
*input_data = qnxinput;
|
||||
}
|
||||
|
||||
static bool gfx_ctx_qnx_bind_api(void *data,
|
||||
enum gfx_ctx_api api, unsigned major, unsigned minor)
|
||||
{
|
||||
(void)data;
|
||||
(void)major;
|
||||
(void)minor;
|
||||
|
||||
return api == GFX_CTX_OPENGL_ES_API;
|
||||
}
|
||||
|
||||
@ -353,6 +380,60 @@ static bool gfx_ctx_qnx_has_windowed(void *data)
|
||||
return false;
|
||||
}
|
||||
|
||||
static int dpi_get_density(qnx_ctx_data_t *qnx)
|
||||
{
|
||||
int screen_dpi[2];
|
||||
|
||||
if(!qnx)
|
||||
return -1;
|
||||
|
||||
if (screen_get_display_property_iv(qnx->screen_disp,
|
||||
SCREEN_PROPERTY_DPI, screen_dpi))
|
||||
{
|
||||
RARCH_ERR("screen_get_display_property_iv [SCREEN_PROPERTY_DPI] failed.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return min(screen_dpi[0], screen_dpi[1]);
|
||||
}
|
||||
|
||||
static bool gfx_ctx_qnx__get_metrics(void *data,
|
||||
enum display_metric_types type, float *value)
|
||||
{
|
||||
static int dpi = -1;
|
||||
qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DISPLAY_METRIC_MM_WIDTH:
|
||||
return false;
|
||||
case DISPLAY_METRIC_MM_HEIGHT:
|
||||
return false;
|
||||
case DISPLAY_METRIC_DPI:
|
||||
if (dpi == -1)
|
||||
{
|
||||
dpi = dpi_get_density(qnx);
|
||||
if (dpi <= 0)
|
||||
goto dpi_fallback;
|
||||
}
|
||||
*value = (float)dpi;
|
||||
break;
|
||||
case DISPLAY_METRIC_NONE:
|
||||
default:
|
||||
*value = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
dpi_fallback:
|
||||
/* Add a fallback in case the device doesn't report DPI.
|
||||
* Calculated as an average of all BB10 device DPIs circa 2016. */
|
||||
dpi = 345;
|
||||
*value = (float)dpi;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void gfx_ctx_qnx_set_swap_interval(void *data, unsigned swap_interval)
|
||||
{
|
||||
qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data;
|
||||
@ -387,16 +468,6 @@ static gfx_ctx_proc_t gfx_ctx_qnx_get_proc_address(const char *symbol)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void gfx_ctx_qnx_get_video_size(void *data,
|
||||
unsigned *width, unsigned *height)
|
||||
{
|
||||
qnx_ctx_data_t *qnx = (qnx_ctx_data_t*)data;
|
||||
|
||||
#ifdef HAVE_EGL
|
||||
egl_get_video_size(&qnx->egl, width, height);
|
||||
#endif
|
||||
}
|
||||
|
||||
static uint32_t gfx_ctx_qnx_get_flags(void *data)
|
||||
{
|
||||
uint32_t flags = 0;
|
||||
@ -409,7 +480,7 @@ static void gfx_ctx_qnx_set_flags(void *data, uint32_t flags)
|
||||
(void)flags;
|
||||
}
|
||||
|
||||
const gfx_ctx_driver_t gfx_ctx_bbqnx = {
|
||||
const gfx_ctx_driver_t gfx_ctx_qnx = {
|
||||
gfx_ctx_qnx_init,
|
||||
gfx_ctx_qnx_destroy,
|
||||
gfx_ctx_qnx_bind_api,
|
||||
@ -419,7 +490,7 @@ const gfx_ctx_driver_t gfx_ctx_bbqnx = {
|
||||
NULL, /* get_video_output_size */
|
||||
NULL, /* get_video_output_prev */
|
||||
NULL, /* get_video_output_next */
|
||||
NULL, /* get_metrics */
|
||||
gfx_ctx_qnx__get_metrics,
|
||||
NULL,
|
||||
gfx_ctx_qnx_update_window_title,
|
||||
gfx_ctx_qnx_check_window,
|
||||
@ -433,7 +504,7 @@ const gfx_ctx_driver_t gfx_ctx_bbqnx = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
"blackberry_qnx",
|
||||
"qnx",
|
||||
gfx_ctx_qnx_get_flags,
|
||||
gfx_ctx_qnx_set_flags,
|
||||
gfx_ctx_qnx_bind_hw_render,
|
@ -69,7 +69,7 @@ static const gfx_ctx_driver_t *gfx_ctx_drivers[] = {
|
||||
&gfx_ctx_android,
|
||||
#endif
|
||||
#if defined(__QNX__)
|
||||
&gfx_ctx_bbqnx,
|
||||
&gfx_ctx_qnx,
|
||||
#endif
|
||||
#if defined(HAVE_COCOA) || defined(HAVE_COCOATOUCH)
|
||||
&gfx_ctx_cocoagl,
|
||||
@ -124,7 +124,7 @@ bool video_context_driver_find_prev_driver(void)
|
||||
settings_t *settings = config_get_ptr();
|
||||
int i = find_video_context_driver_index(
|
||||
settings->video.context_driver);
|
||||
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
strlcpy(settings->video.context_driver,
|
||||
@ -233,7 +233,7 @@ static const gfx_ctx_driver_t *video_context_driver_find_driver(void *data,
|
||||
|
||||
for (i = 0; gfx_ctx_drivers[i]; i++)
|
||||
{
|
||||
const gfx_ctx_driver_t *ctx =
|
||||
const gfx_ctx_driver_t *ctx =
|
||||
video_context_driver_init(data, gfx_ctx_drivers[i], ident,
|
||||
api, major, minor, hw_render_ctx);
|
||||
|
||||
@ -268,8 +268,8 @@ const gfx_ctx_driver_t *video_context_driver_init_first(void *data,
|
||||
|
||||
bool video_context_driver_check_window(gfx_ctx_size_t *size_data)
|
||||
{
|
||||
if ( video_context_data
|
||||
&& current_video_context
|
||||
if ( video_context_data
|
||||
&& current_video_context
|
||||
&& current_video_context->check_window)
|
||||
{
|
||||
current_video_context->check_window(video_context_data,
|
||||
@ -285,7 +285,7 @@ bool video_context_driver_check_window(gfx_ctx_size_t *size_data)
|
||||
|
||||
bool video_context_driver_init_image_buffer(const video_info_t *data)
|
||||
{
|
||||
if ( current_video_context
|
||||
if ( current_video_context
|
||||
&& current_video_context->image_buffer_init
|
||||
&& current_video_context->image_buffer_init(video_context_data, data))
|
||||
return true;
|
||||
@ -305,7 +305,7 @@ bool video_context_driver_write_to_image_buffer(gfx_ctx_image_t *img)
|
||||
|
||||
bool video_context_driver_get_video_output_prev(void)
|
||||
{
|
||||
if (!current_video_context
|
||||
if (!current_video_context
|
||||
|| !current_video_context->get_video_output_prev)
|
||||
return false;
|
||||
current_video_context->get_video_output_prev(video_context_data);
|
||||
@ -314,7 +314,7 @@ bool video_context_driver_get_video_output_prev(void)
|
||||
|
||||
bool video_context_driver_get_video_output_next(void)
|
||||
{
|
||||
if (!current_video_context ||
|
||||
if (!current_video_context ||
|
||||
!current_video_context->get_video_output_next)
|
||||
return false;
|
||||
current_video_context->get_video_output_next(video_context_data);
|
||||
@ -398,7 +398,7 @@ bool video_context_driver_get_proc_address(gfx_ctx_proc_address_t *proc)
|
||||
|
||||
bool video_context_driver_get_metrics(gfx_ctx_metrics_t *metrics)
|
||||
{
|
||||
if ( current_video_context
|
||||
if ( current_video_context
|
||||
&& current_video_context->get_metrics
|
||||
&& current_video_context->get_metrics(video_context_data,
|
||||
metrics->type,
|
||||
@ -418,7 +418,7 @@ bool video_context_driver_input_driver(gfx_ctx_input_t *inp)
|
||||
|
||||
bool video_context_driver_suppress_screensaver(bool *bool_data)
|
||||
{
|
||||
if ( video_context_data
|
||||
if ( video_context_data
|
||||
&& current_video_context
|
||||
&& current_video_context->suppress_screensaver(
|
||||
video_context_data, *bool_data))
|
||||
|
@ -39,7 +39,7 @@ enum gfx_ctx_api
|
||||
GFX_CTX_OPENVG_API,
|
||||
GFX_CTX_VULKAN_API
|
||||
};
|
||||
|
||||
|
||||
enum display_metric_types
|
||||
{
|
||||
DISPLAY_METRIC_NONE = 0,
|
||||
@ -107,7 +107,7 @@ typedef struct gfx_ctx_driver
|
||||
void (*check_window)(void*, bool*, bool*,
|
||||
unsigned*, unsigned*, unsigned);
|
||||
|
||||
/* Acknowledge a resize event. This is needed for some APIs.
|
||||
/* Acknowledge a resize event. This is needed for some APIs.
|
||||
* Most backends will ignore this. */
|
||||
bool (*set_resize)(void*, unsigned, unsigned);
|
||||
|
||||
@ -116,11 +116,11 @@ typedef struct gfx_ctx_driver
|
||||
|
||||
/* Should the screensaver be suppressed? */
|
||||
bool (*suppress_screensaver)(void *data, bool enable);
|
||||
|
||||
|
||||
/* Checks if context driver has windowed support. */
|
||||
bool (*has_windowed)(void*);
|
||||
|
||||
/* Swaps buffers. VBlank sync depends on
|
||||
/* Swaps buffers. VBlank sync depends on
|
||||
* earlier calls to swap_interval. */
|
||||
void (*swap_buffers)(void*, video_frame_info_t video_info);
|
||||
|
||||
@ -132,19 +132,19 @@ typedef struct gfx_ctx_driver
|
||||
* Does not take opaque, to avoid lots of ugly wrapper code. */
|
||||
gfx_ctx_proc_t (*get_proc_address)(const char*);
|
||||
|
||||
/* Returns true if this context supports EGLImage buffers for
|
||||
/* Returns true if this context supports EGLImage buffers for
|
||||
* screen drawing and was initalized correctly. */
|
||||
bool (*image_buffer_init)(void*, const video_info_t*);
|
||||
|
||||
/* Writes the frame to the EGLImage and sets image_handle to it.
|
||||
/* Writes the frame to the EGLImage and sets image_handle to it.
|
||||
* Returns true if a new image handle is created.
|
||||
* Always returns true the first time it's called for a new index.
|
||||
* Always returns true the first time it's called for a new index.
|
||||
* The graphics core must handle a change in the handle correctly. */
|
||||
bool (*image_buffer_write)(void*, const void *frame, unsigned width,
|
||||
unsigned height, unsigned pitch, bool rgb32,
|
||||
unsigned index, void **image_handle);
|
||||
|
||||
/* Shows or hides mouse. Can be NULL if context doesn't
|
||||
/* Shows or hides mouse. Can be NULL if context doesn't
|
||||
* have a concept of mouse pointer. */
|
||||
void (*show_mouse)(void *data, bool state);
|
||||
|
||||
@ -243,7 +243,7 @@ extern const gfx_ctx_driver_t gfx_ctx_android;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_ps3;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_wgl;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_videocore;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_bbqnx;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_qnx;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_cgl;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_cocoagl;
|
||||
extern const gfx_ctx_driver_t gfx_ctx_emscripten;
|
||||
|
@ -163,7 +163,7 @@ VIDEO CONTEXT
|
||||
#elif defined(ANDROID)
|
||||
#include "../gfx/drivers_context/android_ctx.c"
|
||||
#elif defined(__QNX__)
|
||||
#include "../gfx/drivers_context/bbqnx_ctx.c"
|
||||
#include "../gfx/drivers_context/qnx_ctx.c"
|
||||
#elif defined(EMSCRIPTEN)
|
||||
#include "../gfx/drivers_context/emscriptenegl_ctx.c"
|
||||
#elif defined(__APPLE__) && !defined(TARGET_IPHONE_SIMULATOR) && !defined(TARGET_OS_IPHONE)
|
||||
|
@ -30,7 +30,9 @@
|
||||
#include "../../gfx/video_driver.h"
|
||||
#include "../../configuration.h"
|
||||
#include "../input_joypad_driver.h"
|
||||
#include "../tasks/tasks_internal.h"
|
||||
#include "../../tasks/tasks_internal.h"
|
||||
|
||||
#include "../../command.h"
|
||||
|
||||
#define MAX_PADS 8
|
||||
|
||||
@ -74,21 +76,27 @@ typedef struct qnx_input
|
||||
{
|
||||
bool blocked;
|
||||
unsigned pads_connected;
|
||||
struct input_pointer pointer[MAX_TOUCH];
|
||||
unsigned pointer_count;
|
||||
|
||||
int touch_map[MAX_TOUCH];
|
||||
/*
|
||||
* The first pointer_count indices of touch_map will be a valid,
|
||||
* The first pointer_count indices of touch_map will be a valid,
|
||||
* active index in pointer array.
|
||||
* Saves us from searching through pointer array when polling state.
|
||||
*/
|
||||
qnx_input_device_t *port_device[MAX_PADS];
|
||||
struct input_pointer pointer[MAX_TOUCH];
|
||||
unsigned pointer_count;
|
||||
int touch_map[MAX_TOUCH];
|
||||
|
||||
qnx_input_device_t devices[MAX_PADS];
|
||||
const input_device_driver_t *joypad;
|
||||
int16_t analog_state[MAX_PADS][2][2];
|
||||
|
||||
#define QNX_MAX_KEYS (65535 + 7) / 8
|
||||
uint8_t keyboard_state[QNX_MAX_KEYS];
|
||||
|
||||
uint64_t pad_state[MAX_PADS];
|
||||
uint64_t lifecycle_state;
|
||||
|
||||
#define TRACKPAD_CPI 500
|
||||
#define TRACKPAD_THRESHOLD TRACKPAD_CPI / 2
|
||||
int trackpad_acc[2];
|
||||
} qnx_input_t;
|
||||
|
||||
extern screen_context_t screen_ctx;
|
||||
@ -120,6 +128,7 @@ static void qnx_init_controller(qnx_input_t *qnx, qnx_input_device_t* controller
|
||||
}
|
||||
|
||||
#ifdef HAVE_BB10
|
||||
bool prevMenu;
|
||||
static void qnx_process_gamepad_event(
|
||||
qnx_input_t *qnx,
|
||||
screen_event_t screen_event, int type)
|
||||
@ -151,30 +160,74 @@ static void qnx_process_gamepad_event(
|
||||
screen_get_event_property_iv(screen_event,
|
||||
SCREEN_PROPERTY_BUTTONS, &controller->buttons);
|
||||
|
||||
state_cur = (uint64_t*)&qnx->pad_state[controller->port];
|
||||
*state_cur = 0;
|
||||
|
||||
for (i = 0; i < 20; i++)
|
||||
*state_cur |= ((controller->buttons & (1 << i)) ? (1 << i) : 0);
|
||||
|
||||
if (controller->analogCount > 0)
|
||||
{
|
||||
screen_get_event_property_iv(screen_event,
|
||||
SCREEN_PROPERTY_ANALOG0, controller->analog0);
|
||||
|
||||
if (controller->analogCount == 2)
|
||||
screen_get_event_property_iv(screen_event,
|
||||
SCREEN_PROPERTY_ANALOG1, controller->analog1);
|
||||
controller->analog0[0] *= 256;
|
||||
controller->analog0[1] *= 256;
|
||||
|
||||
/* Only user 1
|
||||
* TODO: Am I missing something? Is there a better way? */
|
||||
if((controller->port == 0) &&
|
||||
(controller->buttons &
|
||||
settings->input.binds[0][RARCH_MENU_TOGGLE].joykey))
|
||||
qnx->lifecycle_state ^= (UINT64_C(1) << RARCH_MENU_TOGGLE);
|
||||
if (controller->analogCount == 2)
|
||||
{
|
||||
screen_get_event_property_iv(screen_event,
|
||||
SCREEN_PROPERTY_ANALOG1, controller->analog1);
|
||||
|
||||
controller->analog1[0] *= 256;
|
||||
controller->analog1[1] *= 256;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void qnx_process_joystick_event(qnx_input_t *qnx, screen_event_t screen_event, int type)
|
||||
{
|
||||
int displacement[2];
|
||||
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_DISPLACEMENT, displacement);
|
||||
|
||||
if(displacement != 0)
|
||||
{
|
||||
qnx->trackpad_acc[0] += displacement[0];
|
||||
if(abs(qnx->trackpad_acc[0]) > TRACKPAD_THRESHOLD)
|
||||
{
|
||||
if(qnx->trackpad_acc < 0)
|
||||
{
|
||||
input_keyboard_event(true, RETROK_LEFT, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
input_keyboard_event(false, RETROK_LEFT, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
else if(qnx->trackpad_acc > 0)
|
||||
{
|
||||
input_keyboard_event(true, RETROK_RIGHT, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
input_keyboard_event(false, RETROK_RIGHT, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
|
||||
qnx->trackpad_acc[0] = 0;
|
||||
}
|
||||
|
||||
qnx->trackpad_acc[1] += displacement[1];
|
||||
if(abs(qnx->trackpad_acc[1]) > TRACKPAD_THRESHOLD)
|
||||
{
|
||||
if(qnx->trackpad_acc < 0)
|
||||
{
|
||||
input_keyboard_event(true, RETROK_UP, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
input_keyboard_event(false, RETROK_UP, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
else if(qnx->trackpad_acc > 0)
|
||||
{
|
||||
input_keyboard_event(true, RETROK_DOWN, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
input_keyboard_event(false, RETROK_DOWN, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
|
||||
qnx->trackpad_acc[1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int buttons = 0;
|
||||
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_BUTTONS, &buttons);
|
||||
input_keyboard_event(buttons != 0, RETROK_RETURN, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
|
||||
static void qnx_input_autodetect_gamepad(qnx_input_t *qnx,
|
||||
qnx_input_device_t* controller, int port)
|
||||
qnx_input_device_t* controller)
|
||||
{
|
||||
char name_buf[256];
|
||||
|
||||
@ -182,41 +235,26 @@ static void qnx_input_autodetect_gamepad(qnx_input_t *qnx,
|
||||
return;
|
||||
|
||||
name_buf[0] = '\0';
|
||||
|
||||
/* ID: A-BBBB-CCCC-D.D
|
||||
* A is the device's index in the array
|
||||
* returned by screen_get_context_property_pv()
|
||||
* BBBB is the device's Vendor ID (in hexadecimal)
|
||||
* CCCC is the device's Product ID (also in hexadecimal)
|
||||
* D.D is the device's version number
|
||||
*/
|
||||
if (controller)
|
||||
if(controller && controller->type == SCREEN_EVENT_GAMEPAD)
|
||||
{
|
||||
#ifdef HAVE_BB10
|
||||
if (strstr(controller->id, "057E-0306"))
|
||||
strlcpy(name_buf, "Wiimote", sizeof(name_buf));
|
||||
else
|
||||
#endif
|
||||
if (strstr(controller->id, "0A5C-8502"))
|
||||
strlcpy(name_buf, "BlackBerry BT Keyboard", sizeof(name_buf));
|
||||
#ifdef HAVE_BB10
|
||||
else if (strstr(controller->id, "qwerty:bb35"))
|
||||
strlcpy(name_buf, "BlackBerry Q10 Keypad", sizeof(name_buf));
|
||||
#endif
|
||||
if(strstr(controller->id, "0-054C-05C4-1.0"))
|
||||
strlcpy(name_buf, "DS4 Controller", sizeof(name_buf));
|
||||
else
|
||||
strlcpy(name_buf, "QNX Gamepad", sizeof(name_buf));
|
||||
}
|
||||
|
||||
if (!string_is_empty(name_buf))
|
||||
{
|
||||
controller->port = qnx->pads_connected;
|
||||
|
||||
input_autoconfigure_connect(
|
||||
name_buf,
|
||||
NULL,
|
||||
qnx->joypad->ident,
|
||||
port,
|
||||
controller->port,
|
||||
*controller->vid,
|
||||
*controller->pid);
|
||||
|
||||
controller->port = port;
|
||||
qnx->port_device[port] = controller;
|
||||
qnx->pads_connected++;
|
||||
}
|
||||
}
|
||||
@ -233,12 +271,11 @@ static void qnx_handle_device(qnx_input_t *qnx,
|
||||
screen_get_device_property_cv(controller->handle,
|
||||
SCREEN_PROPERTY_ID_STRING, sizeof(controller->id), controller->id);
|
||||
screen_get_device_property_cv(controller->handle,
|
||||
SCREEN_PROPERTY_VENDOR, sizeof(controller->id), controller->vid);
|
||||
SCREEN_PROPERTY_VENDOR, sizeof(controller->vid), controller->vid);
|
||||
screen_get_device_property_cv(controller->handle,
|
||||
SCREEN_PROPERTY_PRODUCT, sizeof(controller->id), controller->pid);
|
||||
SCREEN_PROPERTY_PRODUCT, sizeof(controller->pid), controller->pid);
|
||||
|
||||
if (controller->type == SCREEN_EVENT_GAMEPAD ||
|
||||
controller->type == SCREEN_EVENT_JOYSTICK)
|
||||
if (controller->type == SCREEN_EVENT_GAMEPAD)
|
||||
{
|
||||
screen_get_device_property_iv(controller->handle,
|
||||
SCREEN_PROPERTY_BUTTON_COUNT, &controller->buttonCount);
|
||||
@ -253,9 +290,9 @@ static void qnx_handle_device(qnx_input_t *qnx,
|
||||
++controller->analogCount;
|
||||
}
|
||||
|
||||
/* Screen service will map supported controllers,
|
||||
/* Screen service will map supported controllers,
|
||||
* we still might need to adjust. */
|
||||
qnx_input_autodetect_gamepad(qnx, controller, controller->port);
|
||||
qnx_input_autodetect_gamepad(qnx, controller);
|
||||
|
||||
if (controller->type == SCREEN_EVENT_GAMEPAD)
|
||||
RARCH_LOG("Gamepad Device Connected:\n");
|
||||
@ -288,7 +325,9 @@ static void qnx_discover_controllers(qnx_input_t *qnx)
|
||||
|
||||
/* Scan the list for gamepad and joystick devices. */
|
||||
for(i = 0; i < qnx->pads_connected; ++i)
|
||||
{
|
||||
qnx_init_controller(qnx, &qnx->devices[i]);
|
||||
}
|
||||
|
||||
qnx->pads_connected = 0;
|
||||
|
||||
@ -298,10 +337,9 @@ static void qnx_discover_controllers(qnx_input_t *qnx)
|
||||
screen_get_device_property_iv(
|
||||
devices_found[i], SCREEN_PROPERTY_TYPE, &type);
|
||||
|
||||
if (
|
||||
type == SCREEN_EVENT_GAMEPAD ||
|
||||
type == SCREEN_EVENT_JOYSTICK ||
|
||||
type == SCREEN_EVENT_KEYBOARD)
|
||||
if (type == SCREEN_EVENT_GAMEPAD ||
|
||||
type == SCREEN_EVENT_JOYSTICK ||
|
||||
type == SCREEN_EVENT_KEYBOARD)
|
||||
{
|
||||
qnx->devices[qnx->pads_connected].handle = devices_found[i];
|
||||
qnx->devices[qnx->pads_connected].index = qnx->pads_connected;
|
||||
@ -320,81 +358,36 @@ static void qnx_process_keyboard_event(
|
||||
qnx_input_t *qnx,
|
||||
screen_event_t event, int type)
|
||||
{
|
||||
unsigned b;
|
||||
qnx_input_device_t* controller = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
int i = 0;
|
||||
int sym = 0;
|
||||
int modifiers = 0;
|
||||
int flags = 0;
|
||||
int scan = 0;
|
||||
int cap = 0;
|
||||
uint64_t *state_cur = NULL;
|
||||
// Get key properties from screen event
|
||||
int flags = 0;
|
||||
screen_get_event_property_iv(event, SCREEN_PROPERTY_KEY_FLAGS, &flags);
|
||||
|
||||
/* Get Keyboard state. */
|
||||
screen_get_event_property_iv(event,
|
||||
SCREEN_PROPERTY_KEY_SYM, &sym);
|
||||
screen_get_event_property_iv(event,
|
||||
SCREEN_PROPERTY_KEY_MODIFIERS, &modifiers);
|
||||
screen_get_event_property_iv(event,
|
||||
SCREEN_PROPERTY_KEY_FLAGS, &flags);
|
||||
screen_get_event_property_iv(event,
|
||||
SCREEN_PROPERTY_KEY_SCAN, &scan);
|
||||
screen_get_event_property_iv(event,
|
||||
SCREEN_PROPERTY_KEY_CAP, &cap);
|
||||
int cap = 0;
|
||||
screen_get_event_property_iv(event, SCREEN_PROPERTY_KEY_CAP, &cap);
|
||||
|
||||
#ifdef HAVE_BB10
|
||||
/* Find device that pressed the key. */
|
||||
screen_device_t device;
|
||||
int mod = 0;
|
||||
screen_get_event_property_iv(event, SCREEN_PROPERTY_KEY_MODIFIERS, &mod);
|
||||
|
||||
screen_get_event_property_pv(event,
|
||||
SCREEN_PROPERTY_DEVICE, (void**)&device);
|
||||
// Calculate state
|
||||
unsigned keycode = input_keymaps_translate_keysym_to_rk(cap);
|
||||
bool keydown = flags & KEY_DOWN;
|
||||
bool keyrepeat = flags & KEY_REPEAT;
|
||||
|
||||
for (i = 0; i < MAX_PADS; ++i)
|
||||
{
|
||||
if (device == qnx->devices[i].handle)
|
||||
{
|
||||
controller = (qnx_input_device_t*)&qnx->devices[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Fire keyboard event
|
||||
if(!keyrepeat)
|
||||
{
|
||||
input_keyboard_event(keydown, keycode, 0, mod, RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
|
||||
if (!controller)
|
||||
return;
|
||||
#else
|
||||
controller = (qnx_input_device_t*)&qnx->devices[0];
|
||||
#endif
|
||||
|
||||
if(controller->port == -1)
|
||||
return;
|
||||
|
||||
state_cur = &qnx->pad_state[controller->port];
|
||||
*state_cur = 0;
|
||||
|
||||
for (b = 0; b < RARCH_FIRST_CUSTOM_BIND; ++b)
|
||||
{
|
||||
if ((unsigned int)
|
||||
settings->input.binds[controller->port][b].joykey
|
||||
== (unsigned int)(sym & 0xFF))
|
||||
{
|
||||
if (flags & KEY_DOWN)
|
||||
{
|
||||
controller->buttons |= 1 << b;
|
||||
*state_cur |= 1 << b;
|
||||
}
|
||||
else
|
||||
controller->buttons &= ~(1<<b);
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO: Am I missing something? Is there a better way? */
|
||||
if((controller->port == 0) && ((unsigned int)
|
||||
settings->input.binds[0][RARCH_MENU_TOGGLE].joykey
|
||||
== (unsigned int)(sym&0xFF)))
|
||||
{
|
||||
if (flags & KEY_DOWN)
|
||||
qnx->lifecycle_state ^= (UINT64_C(1) << RARCH_MENU_TOGGLE);
|
||||
}
|
||||
// Apply keyboard state
|
||||
if(keydown && !keyrepeat)
|
||||
{
|
||||
BIT_SET(qnx->keyboard_state, cap);
|
||||
}
|
||||
else if(!keydown && !keyrepeat)
|
||||
{
|
||||
BIT_CLEAR(qnx->keyboard_state, cap);
|
||||
}
|
||||
}
|
||||
|
||||
static void qnx_process_touch_event(
|
||||
@ -434,12 +427,10 @@ static void qnx_process_touch_event(
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
printf("New Touch: x:%d, y:%d, id:%d\n", pos[0], pos[1], contact_id);
|
||||
fflush(stdout);
|
||||
printf("Map: %d %d %d %d %d %d\n", qnx->touch_map[0], qnx->touch_map[1],
|
||||
qnx->touch_map[2], qnx->touch_map[3], qnx->touch_map[4],
|
||||
RARCH_LOG("New Touch: x:%d, y:%d, id:%d\n", pos[0], pos[1], contact_id);
|
||||
RARCH_LOG("Map: %d %d %d %d %d %d\n", qnx->touch_map[0], qnx->touch_map[1],
|
||||
qnx->touch_map[2], qnx->touch_map[3], qnx->touch_map[4],
|
||||
qnx->touch_map[5]);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
break;
|
||||
|
||||
@ -451,7 +442,7 @@ static void qnx_process_touch_event(
|
||||
/* Invalidate the finger. */
|
||||
qnx->pointer[i].contact_id = -1;
|
||||
|
||||
/* Remove pointer from map and shift
|
||||
/* Remove pointer from map and shift
|
||||
* remaining valid ones to the front. */
|
||||
qnx->touch_map[qnx->pointer[i].map] = -1;
|
||||
for(j = qnx->pointer[i].map; j < qnx->pointer_count; ++j)
|
||||
@ -465,12 +456,10 @@ static void qnx_process_touch_event(
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
printf("Release: x:%d, y:%d, id:%d\n", pos[0], pos[1], contact_id);
|
||||
fflush(stdout);
|
||||
printf("Map: %d %d %d %d %d %d\n", qnx->touch_map[0], qnx->touch_map[1],
|
||||
qnx->touch_map[2], qnx->touch_map[3], qnx->touch_map[4],
|
||||
RARCH_LOG("Release: x:%d, y:%d, id:%d\n", pos[0], pos[1], contact_id);
|
||||
RARCH_LOG("Map: %d %d %d %d %d %d\n", qnx->touch_map[0], qnx->touch_map[1],
|
||||
qnx->touch_map[2], qnx->touch_map[3], qnx->touch_map[4],
|
||||
qnx->touch_map[5]);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
break;
|
||||
|
||||
@ -484,8 +473,8 @@ static void qnx_process_touch_event(
|
||||
#if 0
|
||||
gl_t *gl = (gl_t*)video_driver_get_ptr(false);
|
||||
|
||||
/*During a move, we can go ~30 pixel into the
|
||||
* bezel which gives negative numbers or
|
||||
/*During a move, we can go ~30 pixel into the
|
||||
* bezel which gives negative numbers or
|
||||
* numbers larger than the screen resolution.
|
||||
*
|
||||
* Normalize. */
|
||||
@ -505,9 +494,8 @@ static void qnx_process_touch_event(
|
||||
&qnx->pointer[i].x, &qnx->pointer[i].y,
|
||||
&qnx->pointer[i].full_x, &qnx->pointer[i].full_y);
|
||||
#if 0
|
||||
printf("Move: x:%d, y:%d, id:%d\n", pos[0], pos[1],
|
||||
RARCH_LOG("Move: x:%d, y:%d, id:%d\n", pos[0], pos[1],
|
||||
contact_id);
|
||||
fflush(stdout);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
@ -535,8 +523,10 @@ static void qnx_handle_screen_event(qnx_input_t *qnx, bps_event_t *event)
|
||||
break;
|
||||
#ifdef HAVE_BB10
|
||||
case SCREEN_EVENT_GAMEPAD:
|
||||
case SCREEN_EVENT_JOYSTICK:
|
||||
qnx_process_gamepad_event(qnx, screen_event, type);
|
||||
break;
|
||||
case SCREEN_EVENT_JOYSTICK:
|
||||
qnx_process_joystick_event(qnx, screen_event, type);
|
||||
break;
|
||||
case SCREEN_EVENT_DEVICE:
|
||||
{
|
||||
@ -553,7 +543,7 @@ static void qnx_handle_screen_event(qnx_input_t *qnx, bps_event_t *event)
|
||||
screen_get_device_property_iv(device,
|
||||
SCREEN_PROPERTY_TYPE, &type);
|
||||
|
||||
if (attached &&
|
||||
if (attached &&
|
||||
(
|
||||
type == SCREEN_EVENT_GAMEPAD ||
|
||||
type == SCREEN_EVENT_JOYSTICK ||
|
||||
@ -594,53 +584,69 @@ static void qnx_handle_screen_event(qnx_input_t *qnx, bps_event_t *event)
|
||||
static void qnx_handle_navigator_event(
|
||||
qnx_input_t *qnx, bps_event_t *event)
|
||||
{
|
||||
int rc;
|
||||
navigator_window_state_t state;
|
||||
bps_event_t *event_pause = NULL;
|
||||
|
||||
(void)rc;
|
||||
|
||||
switch (bps_event_get_code(event))
|
||||
{
|
||||
case NAVIGATOR_SWIPE_DOWN:
|
||||
qnx->lifecycle_state ^= (UINT64_C(1) << RARCH_MENU_TOGGLE);
|
||||
case NAVIGATOR_SYSKEY_PRESS:
|
||||
switch(navigator_event_get_syskey_key(event)) {
|
||||
case NAVIGATOR_SYSKEY_BACK:
|
||||
input_keyboard_event(true, RETROK_BACKSPACE, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
input_keyboard_event(false, RETROK_BACKSPACE, 0, 0, RETRO_DEVICE_KEYBOARD);
|
||||
break;
|
||||
case NAVIGATOR_SYSKEY_SEND:
|
||||
case NAVIGATOR_SYSKEY_END:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case NAVIGATOR_EXIT:
|
||||
/* Catch this in thumbnail loop. */
|
||||
case NAVIGATOR_SWIPE_DOWN:
|
||||
command_event(CMD_EVENT_MENU_TOGGLE, NULL);
|
||||
break;
|
||||
case NAVIGATOR_WINDOW_STATE:
|
||||
state = navigator_event_get_window_state(event);
|
||||
|
||||
switch(state)
|
||||
switch(navigator_event_get_window_state(event))
|
||||
{
|
||||
case NAVIGATOR_WINDOW_THUMBNAIL:
|
||||
for(;;)
|
||||
case NAVIGATOR_WINDOW_INVISIBLE:
|
||||
while(true)
|
||||
{
|
||||
/* Block until we get a resume or exit event. */
|
||||
rc = bps_get_event(&event_pause, -1);
|
||||
bps_get_event(&event_pause, -1);
|
||||
unsigned event_code = bps_event_get_code(event_pause);
|
||||
|
||||
if(bps_event_get_code(event_pause) == NAVIGATOR_WINDOW_STATE)
|
||||
if(event_code == NAVIGATOR_WINDOW_STATE)
|
||||
{
|
||||
state = navigator_event_get_window_state(event_pause);
|
||||
if(state == NAVIGATOR_WINDOW_FULLSCREEN)
|
||||
if(navigator_event_get_window_state(event_pause) == NAVIGATOR_WINDOW_FULLSCREEN)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (bps_event_get_code(event_pause) == NAVIGATOR_EXIT)
|
||||
else if(event_code == NAVIGATOR_EXIT)
|
||||
{
|
||||
runloop_ctl(RUNLOOP_CTL_SET_SHUTDOWN, NULL);
|
||||
break;
|
||||
goto shutdown;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NAVIGATOR_WINDOW_FULLSCREEN:
|
||||
break;
|
||||
case NAVIGATOR_WINDOW_INVISIBLE:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case NAVIGATOR_EXIT:
|
||||
goto shutdown;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
togglemenu:
|
||||
command_event(CMD_EVENT_MENU_TOGGLE, NULL);
|
||||
return;
|
||||
shutdown:
|
||||
runloop_ctl(RUNLOOP_CTL_SET_SHUTDOWN, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
static void *qnx_input_init(void)
|
||||
@ -652,6 +658,8 @@ static void *qnx_input_init(void)
|
||||
if (!qnx)
|
||||
return NULL;
|
||||
|
||||
input_keymaps_init_keyboard_lut(rarch_key_map_qnx);
|
||||
|
||||
for (i = 0; i < MAX_TOUCH; ++i)
|
||||
{
|
||||
qnx->pointer[i].contact_id = -1;
|
||||
@ -664,7 +672,6 @@ static void *qnx_input_init(void)
|
||||
for (i = 0; i < MAX_PADS; ++i)
|
||||
{
|
||||
qnx_init_controller(qnx, &qnx->devices[i]);
|
||||
qnx->port_device[i] = 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_BB10
|
||||
@ -673,7 +680,7 @@ static void *qnx_input_init(void)
|
||||
/* Initialize Playbook keyboard. */
|
||||
strlcpy(qnx->devices[0].id, "0A5C-8502",
|
||||
sizeof(qnx->devices[0].id));
|
||||
qnx_input_autodetect_gamepad(qnx, &qnx->devices[0], 0);
|
||||
qnx_input_autodetect_gamepad(qnx, &qnx->devices[0]);
|
||||
qnx->pads_connected = 1;
|
||||
#endif
|
||||
|
||||
@ -685,7 +692,6 @@ static void qnx_input_poll(void *data)
|
||||
qnx_input_t *qnx = (qnx_input_t*)data;
|
||||
|
||||
/* Request and process all available BPS events. */
|
||||
|
||||
while(true)
|
||||
{
|
||||
bps_event_t *event = NULL;
|
||||
@ -707,67 +713,55 @@ static void qnx_input_poll(void *data)
|
||||
}
|
||||
}
|
||||
|
||||
/* Need to return [-0x8000, 0x7fff].
|
||||
* Gamepad API gives us [-128, 127] with (0,0) center
|
||||
* Untested
|
||||
*/
|
||||
|
||||
static int16_t qnx_analog_input_state(qnx_input_t *qnx,
|
||||
unsigned port, unsigned idx, unsigned id)
|
||||
bool qnx_keyboard_pressed(qnx_input_t *qnx, unsigned id)
|
||||
{
|
||||
#ifdef HAVE_BB10
|
||||
if(qnx->port_device[port])
|
||||
{
|
||||
switch ((idx << 1) | id)
|
||||
{
|
||||
case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X:
|
||||
return qnx->port_device[port]->analog0[0] * 256;
|
||||
case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_Y:
|
||||
return qnx->port_device[port]->analog0[1] * 256;
|
||||
case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_X:
|
||||
return qnx->port_device[port]->analog1[0] * 256;
|
||||
case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y:
|
||||
return qnx->port_device[port]->analog1[1] * 256;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
unsigned bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
|
||||
return id < RETROK_LAST && BIT_GET(qnx->keyboard_state, bit);
|
||||
}
|
||||
|
||||
static int16_t qnx_pointer_screen_input_state(qnx_input_t *qnx,
|
||||
unsigned idx, unsigned id)
|
||||
static bool qnx_is_pressed(qnx_input_t *qnx,
|
||||
const struct retro_keybind *binds,
|
||||
unsigned port, unsigned id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_POINTER_X:
|
||||
return qnx->pointer[qnx->touch_map[idx]].full_x;
|
||||
case RETRO_DEVICE_ID_POINTER_Y:
|
||||
return qnx->pointer[qnx->touch_map[idx]].full_y;
|
||||
case RETRO_DEVICE_ID_POINTER_PRESSED:
|
||||
return (
|
||||
idx < qnx->pointer_count)
|
||||
&& (qnx->pointer[idx].full_x != -0x8000)
|
||||
&& (qnx->pointer[idx].full_y != -0x8000);
|
||||
}
|
||||
const struct retro_keybind *bind = &binds[id];
|
||||
if (id >= RARCH_BIND_LIST_END)
|
||||
return false;
|
||||
|
||||
return 0;
|
||||
if (!qnx->blocked && qnx_keyboard_pressed(qnx, bind->key))
|
||||
return true;
|
||||
if (binds && binds[id].valid && input_joypad_pressed(qnx->joypad, port, binds, id))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int16_t qnx_pointer_input_state(qnx_input_t *qnx,
|
||||
unsigned idx, unsigned id)
|
||||
unsigned idx, unsigned id, bool screen)
|
||||
{
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
|
||||
if(screen)
|
||||
{
|
||||
x = qnx->pointer[idx].full_x;
|
||||
y = qnx->pointer[idx].full_y;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = qnx->pointer[idx].x;
|
||||
y = qnx->pointer[idx].y;
|
||||
}
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case RETRO_DEVICE_ID_POINTER_X:
|
||||
return qnx->pointer[qnx->touch_map[idx]].x;
|
||||
return x;
|
||||
case RETRO_DEVICE_ID_POINTER_Y:
|
||||
return qnx->pointer[qnx->touch_map[idx]].y;
|
||||
return y;
|
||||
case RETRO_DEVICE_ID_POINTER_PRESSED:
|
||||
return (
|
||||
idx < qnx->pointer_count)
|
||||
&& (qnx->pointer[idx].x != -0x8000)
|
||||
&& (qnx->pointer[idx].y != -0x8000);
|
||||
return (idx < qnx->pointer_count)
|
||||
&& (x != -0x8000)
|
||||
&& (y != -0x8000);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -778,20 +772,22 @@ static int16_t qnx_input_state(void *data,
|
||||
unsigned port, unsigned device, unsigned idx, unsigned id)
|
||||
{
|
||||
qnx_input_t *qnx = (qnx_input_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
switch (device)
|
||||
{
|
||||
case RETRO_DEVICE_JOYPAD:
|
||||
if (binds[port] && binds[port][id].valid)
|
||||
return input_joypad_pressed(qnx->joypad, port, binds[port], id);
|
||||
return qnx_is_pressed(qnx, binds[port], port, id);
|
||||
break;
|
||||
case RETRO_DEVICE_KEYBOARD:
|
||||
return qnx_keyboard_pressed(qnx, id);
|
||||
break;
|
||||
case RETRO_DEVICE_ANALOG:
|
||||
return qnx_analog_input_state(qnx, port, idx, id);
|
||||
case RARCH_DEVICE_POINTER_SCREEN:
|
||||
return qnx_pointer_screen_input_state(qnx, idx, id);
|
||||
case RETRO_DEVICE_POINTER:
|
||||
return qnx_pointer_input_state(qnx, idx, id);
|
||||
case RARCH_DEVICE_POINTER_SCREEN:
|
||||
return qnx_pointer_input_state(qnx, idx, id, device == RARCH_DEVICE_POINTER_SCREEN);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -799,7 +795,7 @@ static int16_t qnx_input_state(void *data,
|
||||
|
||||
static bool qnx_input_meta_key_pressed(void *data, int key)
|
||||
{
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
static void qnx_input_free_input(void *data)
|
||||
@ -810,17 +806,15 @@ static void qnx_input_free_input(void *data)
|
||||
|
||||
static uint64_t qnx_input_get_capabilities(void *data)
|
||||
{
|
||||
uint64_t caps = 0;
|
||||
(void)data;
|
||||
|
||||
(void)data;
|
||||
|
||||
caps |= (1 << RETRO_DEVICE_JOYPAD);
|
||||
caps |= (1 << RETRO_DEVICE_POINTER);
|
||||
return
|
||||
(1 << RETRO_DEVICE_JOYPAD) |
|
||||
(1 << RETRO_DEVICE_POINTER) |
|
||||
#ifdef HAVE_BB10
|
||||
caps |= (1 << RETRO_DEVICE_ANALOG);
|
||||
(1 << RETRO_DEVICE_ANALOG) |
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
(1 << RETRO_DEVICE_KEYBOARD);
|
||||
}
|
||||
|
||||
static const input_device_driver_t *qnx_input_get_joypad_driver(void *data)
|
||||
@ -829,23 +823,6 @@ static const input_device_driver_t *qnx_input_get_joypad_driver(void *data)
|
||||
return qnx->joypad;
|
||||
}
|
||||
|
||||
static void qnx_input_grab_mouse(void *data, bool state)
|
||||
{
|
||||
(void)data;
|
||||
(void)state;
|
||||
}
|
||||
|
||||
static bool qnx_input_set_rumble(void *data, unsigned port,
|
||||
enum retro_rumble_effect effect, uint16_t strength)
|
||||
{
|
||||
(void)data;
|
||||
(void)port;
|
||||
(void)effect;
|
||||
(void)strength;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool qnx_input_keyboard_mapping_is_blocked(void *data)
|
||||
{
|
||||
qnx_input_t *qnx = (qnx_input_t*)data;
|
||||
@ -872,9 +849,9 @@ input_driver_t input_qnx = {
|
||||
NULL,
|
||||
qnx_input_get_capabilities,
|
||||
"qnx_input",
|
||||
qnx_input_grab_mouse,
|
||||
NULL,
|
||||
qnx_input_set_rumble,
|
||||
NULL,
|
||||
NULL,
|
||||
qnx_input_get_joypad_driver,
|
||||
NULL,
|
||||
qnx_input_keyboard_mapping_is_blocked,
|
||||
|
@ -16,7 +16,6 @@
|
||||
*/
|
||||
|
||||
#include "../../tasks/tasks_internal.h"
|
||||
|
||||
#include "../../configuration.h"
|
||||
|
||||
static const char *qnx_joypad_name(unsigned pad)
|
||||
@ -46,21 +45,19 @@ static bool qnx_joypad_init(void *data)
|
||||
|
||||
static bool qnx_joypad_button(unsigned port_num, uint16_t joykey)
|
||||
{
|
||||
qnx_input_t *qnx = (qnx_input_t*)input_driver_get_data();
|
||||
qnx_input_t *qnx = (qnx_input_t*)input_driver_get_data();
|
||||
if (!qnx || port_num >= MAX_PADS)
|
||||
return 0;
|
||||
|
||||
if (!qnx || port_num >= MAX_PADS)
|
||||
return false;
|
||||
qnx_input_device_t* controller = NULL;
|
||||
controller = (qnx_input_device_t*)&qnx->devices[port_num];
|
||||
|
||||
return qnx->pad_state[port_num] & (UINT64_C(1) << joykey);
|
||||
}
|
||||
if(port_num < MAX_USERS && joykey <= 19)
|
||||
{
|
||||
return (controller->buttons & (1 << joykey)) != 0;
|
||||
}
|
||||
|
||||
static uint64_t qnx_joypad_get_buttons(unsigned port_num)
|
||||
{
|
||||
qnx_input_t *qnx = (qnx_input_t*)input_driver_get_data();
|
||||
|
||||
if (!qnx || port_num >= MAX_PADS)
|
||||
return 0;
|
||||
return qnx->pad_state[port_num];
|
||||
return false;
|
||||
}
|
||||
|
||||
static int16_t qnx_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||
@ -85,19 +82,22 @@ static int16_t qnx_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||
is_pos = true;
|
||||
}
|
||||
|
||||
qnx_input_device_t* controller = NULL;
|
||||
controller = (qnx_input_device_t*)&qnx->devices[port_num];
|
||||
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
val = qnx->analog_state[port_num][0][0];
|
||||
val = controller->analog0[0];
|
||||
break;
|
||||
case 1:
|
||||
val = qnx->analog_state[port_num][0][1];
|
||||
val = controller->analog0[1];
|
||||
break;
|
||||
case 2:
|
||||
val = qnx->analog_state[port_num][1][0];
|
||||
val = controller->analog1[0];
|
||||
break;
|
||||
case 3:
|
||||
val = qnx->analog_state[port_num][1][1];
|
||||
val = controller->analog1[1];
|
||||
break;
|
||||
}
|
||||
|
||||
@ -115,8 +115,7 @@ static void qnx_joypad_poll(void)
|
||||
|
||||
static bool qnx_joypad_query_pad(unsigned pad)
|
||||
{
|
||||
qnx_input_t *qnx = (qnx_input_t*)input_driver_get_data();
|
||||
return (qnx && pad < MAX_USERS && qnx->pad_state[pad]);
|
||||
return (pad < MAX_USERS);
|
||||
}
|
||||
|
||||
|
||||
@ -129,7 +128,7 @@ input_device_driver_t qnx_joypad = {
|
||||
qnx_joypad_query_pad,
|
||||
qnx_joypad_destroy,
|
||||
qnx_joypad_button,
|
||||
qnx_joypad_get_buttons,
|
||||
NULL,
|
||||
qnx_joypad_axis,
|
||||
qnx_joypad_poll,
|
||||
NULL,
|
||||
|
@ -22,6 +22,10 @@
|
||||
#include "../tasks/tasks_internal.h"
|
||||
#include "input_config.h"
|
||||
|
||||
#ifdef __QNX__
|
||||
#include <screen/screen.h>
|
||||
#endif
|
||||
|
||||
#define DECL_BTN(btn, bind) "input_" #btn "_btn = " #bind "\n"
|
||||
#define DECL_AXIS(axis, bind) "input_" #axis "_axis = " #bind "\n"
|
||||
#define DECL_MENU(btn) "input_menu_toggle_btn = " #btn "\n"
|
||||
@ -81,6 +85,64 @@ DECL_AXIS(r_y_plus, -3) \
|
||||
DECL_AXIS(r_y_minus, +3)
|
||||
#endif
|
||||
|
||||
#ifdef __QNX__
|
||||
#define QNX_DEFAULT_BINDS \
|
||||
DECL_BTN(a, 3) \
|
||||
DECL_BTN(b, 2 ) \
|
||||
DECL_BTN(x, 4 ) \
|
||||
DECL_BTN(y, 1 ) \
|
||||
DECL_BTN(start, 10) \
|
||||
DECL_BTN(select, 9 ) \
|
||||
DECL_MENU(13) \
|
||||
DECL_BTN(up, 16 ) \
|
||||
DECL_BTN(down, 17) \
|
||||
DECL_BTN(left, 18 ) \
|
||||
DECL_BTN(right, 19 ) \
|
||||
DECL_BTN(l, 5 ) \
|
||||
DECL_BTN(r, 6 ) \
|
||||
DECL_BTN(l2, 7 ) \
|
||||
DECL_BTN(r2, 8 ) \
|
||||
DECL_BTN(l3, 11 ) \
|
||||
DECL_BTN(r3, 12 ) \
|
||||
DECL_BTN(enable_hotkey, 0) \
|
||||
DECL_AXIS(l_x_plus, +0) \
|
||||
DECL_AXIS(l_x_minus, -0) \
|
||||
DECL_AXIS(l_y_plus, +1) \
|
||||
DECL_AXIS(l_y_minus, -1) \
|
||||
DECL_AXIS(r_x_plus, +2) \
|
||||
DECL_AXIS(r_x_minus, -2) \
|
||||
DECL_AXIS(r_y_plus, -3) \
|
||||
DECL_AXIS(r_y_minus, +3)
|
||||
|
||||
#define QNX_DUALSHOCK_BINDS \
|
||||
DECL_BTN(a, 3) \
|
||||
DECL_BTN(b, 2 ) \
|
||||
DECL_BTN(x, 4 ) \
|
||||
DECL_BTN(y, 1 ) \
|
||||
DECL_BTN(start, 10) \
|
||||
DECL_BTN(select, 9 ) \
|
||||
DECL_MENU(13) \
|
||||
DECL_BTN(up, 16 ) \
|
||||
DECL_BTN(down, 17) \
|
||||
DECL_BTN(left, 18 ) \
|
||||
DECL_BTN(right, 19 ) \
|
||||
DECL_BTN(l, 5 ) \
|
||||
DECL_BTN(r, 6 ) \
|
||||
DECL_BTN(l2, 7 ) \
|
||||
DECL_BTN(r2, 8 ) \
|
||||
DECL_BTN(l3, 11 ) \
|
||||
DECL_BTN(r3, 12 ) \
|
||||
DECL_BTN(enable_hotkey, 0) \
|
||||
DECL_AXIS(l_x_plus, +0) \
|
||||
DECL_AXIS(l_x_minus, -0) \
|
||||
DECL_AXIS(l_y_plus, +1) \
|
||||
DECL_AXIS(l_y_minus, -1) \
|
||||
DECL_AXIS(r_x_plus, +2) \
|
||||
DECL_AXIS(r_x_minus, -2) \
|
||||
DECL_AXIS(r_y_plus, -3) \
|
||||
DECL_AXIS(r_y_minus, +3)
|
||||
#endif
|
||||
|
||||
#define PSPINPUT_DEFAULT_BINDS \
|
||||
DECL_BTN(a, 8) \
|
||||
DECL_BTN(b, 0) \
|
||||
@ -273,7 +335,7 @@ DECL_BTN(l, 4) \
|
||||
DECL_BTN(r, 5) \
|
||||
DECL_BTN(l3, 8) \
|
||||
DECL_BTN(r3, 9) \
|
||||
DECL_BTN(menu_toggle, 10) \
|
||||
DECL_MENU(10) \
|
||||
DECL_AXIS(l2, +4) \
|
||||
DECL_AXIS(r2, +5) \
|
||||
DECL_AXIS(l_x_plus, +0) \
|
||||
@ -332,6 +394,10 @@ const char* const input_builtin_autoconfs[] =
|
||||
#if defined(ANDROID)
|
||||
DECL_AUTOCONF_DEVICE("Android Gamepad", "android", ANDROID_DEFAULT_BINDS),
|
||||
#endif
|
||||
#ifdef __QNX__
|
||||
DECL_AUTOCONF_DEVICE("QNX Controller", "qnx", QNX_DEFAULT_BINDS),
|
||||
DECL_AUTOCONF_DEVICE("DS4 Controller", "qnx", QNX_DUALSHOCK_BINDS),
|
||||
#endif
|
||||
#if defined(VITA) || defined(SN_TARGET_PSP2)
|
||||
DECL_AUTOCONF_DEVICE("Vita Controller", "vita", PSPINPUT_DEFAULT_BINDS),
|
||||
DECL_AUTOCONF_DEVICE("DS3 Controller", "vita", PSPINPUT_DEFAULT_BINDS),
|
||||
|
@ -32,6 +32,10 @@
|
||||
#include "drivers_keyboard/keyboard_event_android.h"
|
||||
#endif
|
||||
|
||||
#ifdef __QNX__
|
||||
#include <sys/keycodes.h>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_SDL) || defined(HAVE_SDL2)
|
||||
#include "SDL.h"
|
||||
#endif
|
||||
@ -1085,6 +1089,81 @@ const struct rarch_key_map rarch_key_map_android[] = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef __QNX__
|
||||
const struct rarch_key_map rarch_key_map_qnx[] = {
|
||||
{ KEYCODE_BACKSPACE, RETROK_BACKSPACE },
|
||||
{ KEYCODE_RETURN, RETROK_RETURN },
|
||||
{ KEYCODE_SPACE, RETROK_SPACE },
|
||||
{ KEYCODE_UP, RETROK_UP },
|
||||
{ KEYCODE_DOWN, RETROK_DOWN },
|
||||
{ KEYCODE_LEFT, RETROK_LEFT },
|
||||
{ KEYCODE_RIGHT, RETROK_RIGHT },
|
||||
{ KEYCODE_A, RETROK_a },
|
||||
{ KEYCODE_B, RETROK_b },
|
||||
{ KEYCODE_C, RETROK_c },
|
||||
{ KEYCODE_D, RETROK_d },
|
||||
{ KEYCODE_E, RETROK_e },
|
||||
{ KEYCODE_F, RETROK_f },
|
||||
{ KEYCODE_G, RETROK_g },
|
||||
{ KEYCODE_H, RETROK_h },
|
||||
{ KEYCODE_I, RETROK_i },
|
||||
{ KEYCODE_J, RETROK_j },
|
||||
{ KEYCODE_K, RETROK_k },
|
||||
{ KEYCODE_L, RETROK_l },
|
||||
{ KEYCODE_M, RETROK_m },
|
||||
{ KEYCODE_N, RETROK_n },
|
||||
{ KEYCODE_O, RETROK_o },
|
||||
{ KEYCODE_P, RETROK_p },
|
||||
{ KEYCODE_Q, RETROK_q },
|
||||
{ KEYCODE_R, RETROK_r },
|
||||
{ KEYCODE_S, RETROK_s },
|
||||
{ KEYCODE_T, RETROK_t },
|
||||
{ KEYCODE_U, RETROK_u },
|
||||
{ KEYCODE_V, RETROK_v },
|
||||
{ KEYCODE_W, RETROK_w },
|
||||
{ KEYCODE_X, RETROK_x },
|
||||
{ KEYCODE_Y, RETROK_y },
|
||||
{ KEYCODE_Z, RETROK_z },
|
||||
{ KEYCODE_ZERO, RETROK_0 },
|
||||
{ KEYCODE_ONE, RETROK_1 },
|
||||
{ KEYCODE_TWO, RETROK_2 },
|
||||
{ KEYCODE_THREE, RETROK_3 },
|
||||
{ KEYCODE_FOUR, RETROK_4 },
|
||||
{ KEYCODE_FIVE, RETROK_5 },
|
||||
{ KEYCODE_SIX, RETROK_6 },
|
||||
{ KEYCODE_SEVEN, RETROK_7 },
|
||||
{ KEYCODE_EIGHT, RETROK_8 },
|
||||
{ KEYCODE_NINE, RETROK_9 },
|
||||
{ KEYCODE_INSERT, RETROK_INSERT },
|
||||
{ KEYCODE_HOME, RETROK_HOME },
|
||||
{ KEYCODE_END, RETROK_END },
|
||||
{ KEYCODE_PG_UP, RETROK_PAGEUP },
|
||||
{ KEYCODE_PG_DOWN, RETROK_PAGEDOWN },
|
||||
{ KEYCODE_F1, RETROK_F1 },
|
||||
{ KEYCODE_F2, RETROK_F2 },
|
||||
{ KEYCODE_F3, RETROK_F3 },
|
||||
{ KEYCODE_F4, RETROK_F4 },
|
||||
{ KEYCODE_F5, RETROK_F5 },
|
||||
{ KEYCODE_F6, RETROK_F6 },
|
||||
{ KEYCODE_F7, RETROK_F7 },
|
||||
{ KEYCODE_F8, RETROK_F8 },
|
||||
{ KEYCODE_F9, RETROK_F9 },
|
||||
{ KEYCODE_F10, RETROK_F10 },
|
||||
{ KEYCODE_F11, RETROK_F11 },
|
||||
{ KEYCODE_F12, RETROK_F12 },
|
||||
{ KEYCODE_LEFT_SHIFT, RETROK_LSHIFT },
|
||||
{ KEYCODE_RIGHT_SHIFT, RETROK_RSHIFT },
|
||||
{ KEYCODE_LEFT_CTRL, RETROK_LCTRL },
|
||||
{ KEYCODE_RIGHT_CTRL, RETROK_RCTRL },
|
||||
{ KEYCODE_LEFT_ALT, RETROK_LALT },
|
||||
{ KEYCODE_RIGHT_ALT, RETROK_RALT },
|
||||
// TODO/FIXME: Code for 'sym' key on BB keyboards. Figure out which sys/keycodes.h define this maps to.
|
||||
{ 61651, RETROK_RSUPER },
|
||||
{ KEYCODE_DOLLAR, RETROK_DOLLAR },
|
||||
{ KEYCODE_MENU, RETROK_MENU },
|
||||
{ 0, RETROK_UNKNOWN },
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
const struct rarch_key_map rarch_key_map_apple_hid[] = {
|
||||
|
@ -56,6 +56,7 @@ extern const struct rarch_key_map rarch_key_map_rwebinput[];
|
||||
extern const struct rarch_key_map rarch_key_map_linux[];
|
||||
extern const struct rarch_key_map rarch_key_map_apple_hid[];
|
||||
extern const struct rarch_key_map rarch_key_map_android[];
|
||||
extern const struct rarch_key_map rarch_key_map_qnx[];
|
||||
|
||||
/**
|
||||
* input_keymaps_init_keyboard_lut:
|
||||
|
@ -196,6 +196,8 @@ bool mkdir_norecurse(const char *dir)
|
||||
ret = mkdir(dir, 0755);
|
||||
#elif defined(VITA) || defined(PSP)
|
||||
ret = sceIoMkdir(dir, 0777);
|
||||
#elif defined(__QNX__)
|
||||
ret = mkdir(dir, 0777);
|
||||
#else
|
||||
ret = mkdir(dir, 0750);
|
||||
#endif
|
||||
|
@ -146,7 +146,7 @@ static void jsonx_parse_array(state_t* state)
|
||||
|
||||
while ( *state->json != ']' )
|
||||
{
|
||||
HANDLE_1( index, ndx++ );
|
||||
HANDLE_1( array_index, ndx++ );
|
||||
jsonx_parse_value( state );
|
||||
skip_spaces( state );
|
||||
|
||||
|
@ -51,7 +51,7 @@ typedef struct
|
||||
int ( *start_array )( void* userdata );
|
||||
int ( *end_array )( void* userdata );
|
||||
int ( *key )( void* userdata, const char* name, size_t length );
|
||||
int ( *index )( void* userdata, unsigned int index );
|
||||
int ( *array_index )( void* userdata, unsigned int index );
|
||||
int ( *string )( void* userdata, const char* string, size_t length );
|
||||
int ( *number )( void* userdata, const char* number, size_t length );
|
||||
int ( *boolean )( void* userdata, int istrue );
|
||||
|
@ -26,9 +26,7 @@
|
||||
#include "../menu_cbs.h"
|
||||
#include "../../msg_hash.h"
|
||||
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
#include "../../database_info.h"
|
||||
#endif
|
||||
|
||||
#include "../../cores/internal_cores.h"
|
||||
|
||||
|
@ -99,7 +99,7 @@ typedef struct mui_handle
|
||||
int size;
|
||||
} cursor;
|
||||
|
||||
struct
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
@ -387,7 +387,7 @@ static void mui_draw_tab_end(mui_handle_t *mui,
|
||||
&active_tab_marker_color[0]);
|
||||
}
|
||||
|
||||
static void mui_draw_scrollbar(mui_handle_t *mui,
|
||||
static void mui_draw_scrollbar(mui_handle_t *mui,
|
||||
unsigned width, unsigned height, float *coord_color)
|
||||
{
|
||||
unsigned header_height;
|
||||
@ -529,7 +529,7 @@ static void mui_render(void *data)
|
||||
int16_t pointer_y = menu_input_pointer_state(MENU_POINTER_Y_AXIS);
|
||||
float old_accel_val = 0.0f;
|
||||
float new_accel_val = 0.0f;
|
||||
unsigned new_pointer_val =
|
||||
unsigned new_pointer_val =
|
||||
(pointer_y - mui->line_height + mui->scroll_y - 16)
|
||||
/ mui->line_height;
|
||||
|
||||
@ -547,7 +547,7 @@ static void mui_render(void *data)
|
||||
{
|
||||
int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS);
|
||||
|
||||
unsigned new_pointer_val =
|
||||
unsigned new_pointer_val =
|
||||
(mouse_y - mui->line_height + mui->scroll_y - 16)
|
||||
/ mui->line_height;
|
||||
|
||||
@ -640,7 +640,7 @@ static void mui_render_label_value(mui_handle_t *mui,
|
||||
y + mui->line_height / 2 + label_offset,
|
||||
width, height, color, TEXT_ALIGN_LEFT, 1.0f, false, 0);
|
||||
|
||||
if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_DISABLED)) ||
|
||||
if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_DISABLED)) ||
|
||||
(string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF))))
|
||||
{
|
||||
if (mui->textures.list[MUI_TEXTURE_SWITCH_OFF])
|
||||
@ -651,7 +651,7 @@ static void mui_render_label_value(mui_handle_t *mui,
|
||||
else
|
||||
do_draw_text = true;
|
||||
}
|
||||
else if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_ENABLED)) ||
|
||||
else if (string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_ENABLED)) ||
|
||||
(string_is_equal(value, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON))))
|
||||
{
|
||||
if (mui->textures.list[MUI_TEXTURE_SWITCH_ON])
|
||||
@ -777,12 +777,12 @@ static void mui_render_menu_list(mui_handle_t *mui,
|
||||
width,
|
||||
height,
|
||||
*frame_count / 20,
|
||||
font_hover_color,
|
||||
font_hover_color,
|
||||
entry_selected,
|
||||
rich_label,
|
||||
entry_value,
|
||||
rich_label,
|
||||
entry_value,
|
||||
menu_list_color
|
||||
);
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -812,12 +812,12 @@ static int mui_get_core_title(char *s, size_t len)
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_GET,
|
||||
&system);
|
||||
|
||||
|
||||
core_name = system->library_name;
|
||||
core_version = system->library_version;
|
||||
|
||||
if (!settings->menu.core_enable)
|
||||
return -1;
|
||||
return -1;
|
||||
|
||||
if (runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &info))
|
||||
{
|
||||
@ -1194,7 +1194,7 @@ static void mui_frame(void *data)
|
||||
header_height - mui->scroll_y + mui->line_height *selection,
|
||||
width,
|
||||
mui->line_height,
|
||||
width,
|
||||
width,
|
||||
height,
|
||||
&highlighted_entry_color[0]
|
||||
);
|
||||
@ -1203,11 +1203,11 @@ static void mui_frame(void *data)
|
||||
menu_display_font_bind_block(mui->font2, &mui->raster_block2);
|
||||
|
||||
mui_render_menu_list(
|
||||
mui,
|
||||
width,
|
||||
mui,
|
||||
width,
|
||||
height,
|
||||
font_normal_color,
|
||||
font_hover_color,
|
||||
font_normal_color,
|
||||
font_hover_color,
|
||||
&active_tab_marker_color[0]
|
||||
);
|
||||
|
||||
@ -1217,11 +1217,11 @@ static void mui_frame(void *data)
|
||||
|
||||
/* header */
|
||||
menu_display_draw_quad(
|
||||
0,
|
||||
0,
|
||||
width,
|
||||
0,
|
||||
0,
|
||||
width,
|
||||
header_height,
|
||||
width,
|
||||
width,
|
||||
height,
|
||||
&header_bg_color[0]);
|
||||
|
||||
@ -1239,11 +1239,11 @@ static void mui_frame(void *data)
|
||||
}
|
||||
|
||||
menu_display_draw_quad(
|
||||
0,
|
||||
header_height,
|
||||
0,
|
||||
header_height,
|
||||
width,
|
||||
mui->shadow_height,
|
||||
width,
|
||||
width,
|
||||
height,
|
||||
&shadow_bg[0]);
|
||||
|
||||
@ -1284,7 +1284,7 @@ static void mui_frame(void *data)
|
||||
size_t usable_width = width - (mui->margin * 2);
|
||||
|
||||
title_buf_msg_tmp[0] = title_buf_msg[0] = '\0';
|
||||
|
||||
|
||||
snprintf(title_buf_msg, sizeof(title_buf), "%s (%s)",
|
||||
title_buf, title_msg);
|
||||
value_len = utf8len(title_buf);
|
||||
@ -1347,8 +1347,8 @@ static void mui_layout(mui_handle_t *mui)
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
/* Mobiles platforms may have very small display metrics
|
||||
* coupled to a high resolution, so we should be DPI aware
|
||||
/* Mobiles platforms may have very small display metrics
|
||||
* coupled to a high resolution, so we should be DPI aware
|
||||
* to ensure the entries hitboxes are big enough.
|
||||
*
|
||||
* On desktops, we just care about readability, with every widget
|
||||
@ -1379,7 +1379,7 @@ static void mui_layout(mui_handle_t *mui)
|
||||
|
||||
if (mui->font) /* calculate a more realistic ticker_limit */
|
||||
{
|
||||
unsigned m_width =
|
||||
unsigned m_width =
|
||||
font_driver_get_message_width(mui->font, "a", 1, 1);
|
||||
|
||||
if (m_width)
|
||||
@ -1616,21 +1616,21 @@ static void mui_preswitch_tabs(mui_handle_t *mui, unsigned action)
|
||||
switch (mui->categories.selection_ptr)
|
||||
{
|
||||
case MUI_SYSTEM_TAB_MAIN:
|
||||
menu_stack->list[stack_size - 1].label =
|
||||
menu_stack->list[stack_size - 1].label =
|
||||
strdup(msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU));
|
||||
menu_stack->list[stack_size - 1].type =
|
||||
menu_stack->list[stack_size - 1].type =
|
||||
MENU_SETTINGS;
|
||||
break;
|
||||
case MUI_SYSTEM_TAB_PLAYLISTS:
|
||||
menu_stack->list[stack_size - 1].label =
|
||||
menu_stack->list[stack_size - 1].label =
|
||||
strdup(msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB));
|
||||
menu_stack->list[stack_size - 1].type =
|
||||
menu_stack->list[stack_size - 1].type =
|
||||
MENU_PLAYLISTS_TAB;
|
||||
break;
|
||||
case MUI_SYSTEM_TAB_SETTINGS:
|
||||
menu_stack->list[stack_size - 1].label =
|
||||
menu_stack->list[stack_size - 1].label =
|
||||
strdup(msg_hash_to_str(MENU_ENUM_LABEL_SETTINGS_TAB));
|
||||
menu_stack->list[stack_size - 1].type =
|
||||
menu_stack->list[stack_size - 1].type =
|
||||
MENU_SETTINGS;
|
||||
break;
|
||||
}
|
||||
@ -1802,7 +1802,7 @@ static size_t mui_list_get_selection(void *data)
|
||||
}
|
||||
|
||||
static int mui_pointer_tap(void *userdata,
|
||||
unsigned x, unsigned y,
|
||||
unsigned x, unsigned y,
|
||||
unsigned ptr, menu_file_list_cbs_t *cbs,
|
||||
menu_entry_t *entry, unsigned action)
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
6
pkg/qnx/.gitignore
vendored
Normal file
6
pkg/qnx/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
.settings
|
||||
ES2-Debug
|
||||
ES2-Release
|
||||
ES3-Debug
|
||||
ES3-Release
|
||||
cores
|
@ -3,6 +3,7 @@
|
||||
<name>RetroArch</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
<project>RetroArch_</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
@ -33,27 +34,27 @@
|
||||
<link>
|
||||
<name>src/cc_resampler_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/audio/drivers_resampler/cc_resampler_neon.S</locationURI>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/audio/drivers_resampler/cc_resampler_neon.S</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/float_to_s16_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/libretro-common/conversion/float_to_s16_neon.S</locationURI>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/libretro-common/audio/conversion/float_to_s16_neon.S</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/griffin.c</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/griffin/griffin.c</locationURI>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/griffin/griffin.c</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/s16_to_float_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/libretro-common/conversion/s16_to_float_neon.S</locationURI>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/libretro-common/audio/conversion/s16_to_float_neon.S</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/sinc_neon.S</name>
|
||||
<name>src/sinc_resampler_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/audio/drivers_resampler/sinc_resampler_neon.S</locationURI>
|
||||
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/libretro-common/audio/resampler/drivers/sinc_resampler_neon.S</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
</projectDescription>
|
52
pkg/qnx/bar-descriptor.xml
Normal file
52
pkg/qnx/bar-descriptor.xml
Normal file
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<qnx xmlns="http://www.qnx.com/schemas/application/1.0">
|
||||
|
||||
<id>com.RetroArch</id>
|
||||
<versionNumber>1.3.6</versionNumber>
|
||||
<buildId>3</buildId>
|
||||
<description>Cross-platform entertainment system</description>
|
||||
<author>Team Libretro</author>
|
||||
<initialWindow>
|
||||
<autoOrients>true</autoOrients>
|
||||
<systemChrome>none</systemChrome>
|
||||
</initialWindow>
|
||||
<name>RetroArch</name>
|
||||
<icon>
|
||||
<image>retroarch-96x96.png</image>
|
||||
</icon>
|
||||
<splashScreens>
|
||||
<image>canvas.png</image>
|
||||
</splashScreens>
|
||||
<category>core.games</category>
|
||||
<asset path="${workspace_loc:/RetroArch_/media/assets}">assets/assets</asset>
|
||||
<asset path="${workspace_loc:/RetroArch_/media/overlays}">assets/overlays</asset>
|
||||
<asset path="../../../dist/info">assets/info</asset>
|
||||
<asset path="cores">assets/cores</asset>
|
||||
<asset path="${workspace_loc:/RetroArch_/media/retroarch-96x96.png}">retroarch-96x96.png</asset>
|
||||
<asset path="${workspace_loc:/RetroArch_/media/canvas.png}">canvas.png</asset>
|
||||
<configuration name="ES2-Debug">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="ES2-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="ES3-Debug">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="ES3-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="ES2-Release">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="ES2-Release/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="ES3-Release">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="ES3-Release/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
|
||||
|
||||
<permission>use_gamepad</permission>
|
||||
<permission>access_shared</permission>
|
||||
<permission>access_internet</permission>
|
||||
|
||||
<!-- Ensure that shared libraries in the package are found at run-time. -->
|
||||
<env var="LD_LIBRARY_PATH" value="app/native/lib"/>
|
||||
|
||||
</qnx>
|
@ -1,60 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<qnx xmlns="http://www.qnx.com/schemas/application/1.0">
|
||||
|
||||
<id>com.RetroArch</id>
|
||||
<name>RetroArch</name>
|
||||
<versionNumber>1.3.5</versionNumber>
|
||||
<buildId>1</buildId>
|
||||
<description>Cross-platform entertainment system</description>
|
||||
<author>Team Libretro</author>
|
||||
<initialWindow>
|
||||
<autoOrients>true</autoOrients>
|
||||
<systemChrome>none</systemChrome>
|
||||
<transparent>false</transparent>
|
||||
</initialWindow>
|
||||
<category>core.games</category>
|
||||
<asset path="../../../media/assets">assets</asset>
|
||||
<asset path="../../../media/retroarch-96x96.png">icon.png</asset>
|
||||
<asset path="../../../media/overlays">overlays</asset>
|
||||
<asset path="lib">lib</asset>
|
||||
<asset path="../../../retroarch.cfg">retroarch.cfg</asset>
|
||||
<configuration name="Device-Debug">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="Device-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="Device-Release">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="Device-Release/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="Device-Profile">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="Device-Profile/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="Device-Coverage">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="Device-Coverage/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="Simulator-Debug">
|
||||
<platformArchitecture>x86</platformArchitecture>
|
||||
<asset path="Simulator-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="Simulator-Profile">
|
||||
<platformArchitecture>x86</platformArchitecture>
|
||||
<asset path="Simulator-Profile/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration name="Simulator-Coverage">
|
||||
<platformArchitecture>x86</platformArchitecture>
|
||||
<asset path="Simulator-Coverage/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
|
||||
<icon>
|
||||
<image>icon.png</image>
|
||||
</icon>
|
||||
|
||||
<permission>access_shared</permission>
|
||||
<permission>use_gamepad</permission>
|
||||
|
||||
<!-- Ensure that shared libraries in the package are found at run-time. -->
|
||||
<env var="LD_LIBRARY_PATH" value="app/native/lib"/>
|
||||
|
||||
</qnx>
|
@ -1,75 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?>
|
||||
|
||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="com.qnx.qcc.toolChain.465834703">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.qnx.qcc.toolChain.465834703" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="com.qnx.tools.ide.qde.core.QDEBynaryParser" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.qnx.qcc.toolChain.465834703" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||
<folderInfo id="com.qnx.qcc.toolChain.465834703.1522725608" name="/" resourcePath="">
|
||||
<toolChain id="com.qnx.qcc.toolChain.2026677004" name="com.qnx.qcc.toolChain" superClass="com.qnx.qcc.toolChain">
|
||||
<option id="com.qnx.qcc.option.os.1857876616" name="Target OS:" superClass="com.qnx.qcc.option.os"/>
|
||||
<option id="com.qnx.qcc.option.cpu.324174887" name="Target CPU:" superClass="com.qnx.qcc.option.cpu" value="com.qnx.qcc.option.gen.cpu.armle-v7" valueType="enumerated"/>
|
||||
<option id="com.qnx.qcc.option.compiler.1313261829" name="Compiler:" superClass="com.qnx.qcc.option.compiler"/>
|
||||
<option id="com.qnx.qcc.option.runtime.1718862028" name="Runtime:" superClass="com.qnx.qcc.option.runtime"/>
|
||||
<targetPlatform archList="all" binaryParser="com.qnx.tools.ide.qde.core.QDEBynaryParser" id="com.qnx.qcc.targetPlatform.590278572" osList="all" superClass="com.qnx.qcc.targetPlatform"/>
|
||||
<builder id="com.qnx.qcc.toolChain.465834703.1104693783" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
|
||||
<tool id="com.qnx.qcc.tool.compiler.655520414" name="QCC Compiler" superClass="com.qnx.qcc.tool.compiler">
|
||||
<option id="com.qnx.qcc.option.compiler.optlevel.258768326" name="Optimization Level" superClass="com.qnx.qcc.option.compiler.optlevel" value="com.qnx.qcc.option.compiler.optlevel.0" valueType="enumerated"/>
|
||||
<inputType id="com.qnx.qcc.inputType.compiler.758610700" superClass="com.qnx.qcc.inputType.compiler"/>
|
||||
</tool>
|
||||
<tool id="com.qnx.qcc.tool.assembler.510266832" name="QCC Assembler" superClass="com.qnx.qcc.tool.assembler">
|
||||
<inputType id="com.qnx.qcc.inputType.assembler.1119465357" superClass="com.qnx.qcc.inputType.assembler"/>
|
||||
</tool>
|
||||
<tool id="com.qnx.qcc.tool.linker.1875021903" name="QCC Linker" superClass="com.qnx.qcc.tool.linker"/>
|
||||
<tool id="com.qnx.qcc.tool.archiver.659806667" name="QCC Archiver" superClass="com.qnx.qcc.tool.archiver"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="RetroArch.null.970139030" name="RetroArch"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.toolChain.465834703">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.491517832">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.debug.1423528231">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.1740368212">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.debug.507133694">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.coverage.1511241566">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.release.237026123">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="com.qnx.qcc.configuration.exe.profile.coverage.511003583">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.qnx.tools.ide.qde.managedbuilder.core.qccScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||
<resource resourceType="PROJECT" workspacePath="/RetroArch"/>
|
||||
</storageModule>
|
||||
</cproject>
|
@ -1,121 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>RetroArch</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
<dictionary>
|
||||
<key>?name?</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||
<value></value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||
<value>make</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||
<value>clean</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.contents</key>
|
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||
<value>false</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||
<value>all</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
<dictionary>
|
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||
<value>true</value>
|
||||
</dictionary>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.qnx.tools.bbt.xml.core.bbtXMLValidationBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
<nature>com.qnx.tools.ide.bbt.core.bbtnature</nature>
|
||||
</natures>
|
||||
<linkedResources>
|
||||
<link>
|
||||
<name>overlays</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/media/overlays</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>shaders_glsl</name>
|
||||
<type>2</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/media/shaders_glsl</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/griffin.c</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/griffin/griffin.c</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/sinc_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/audio/drivers_resampler/sinc_resampler_neon.S</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/s16_to_float_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/libretro-common/conversion/s16_to_float_neon.S</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/float_to_s16_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/libretro-common/conversion/float_to_s16_neon.S</locationURI>
|
||||
</link>
|
||||
<link>
|
||||
<name>src/cc_resampler_neon.S</name>
|
||||
<type>1</type>
|
||||
<locationURI>PARENT-3-PROJECT_LOC/audio/drivers_resampler/cc_resampler_neon.S</locationURI>
|
||||
</link>
|
||||
</linkedResources>
|
||||
</projectDescription>
|
@ -1,66 +0,0 @@
|
||||
#Sun Feb 24 21:20:16 CET 2013
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.codan.checkers.errnoreturn=Warning
|
||||
org.eclipse.cdt.codan.checkers.errnoreturn.params={implicit\=>false}
|
||||
org.eclipse.cdt.codan.checkers.errreturnvalue=Error
|
||||
org.eclipse.cdt.codan.checkers.errreturnvalue.params={}
|
||||
org.eclipse.cdt.codan.checkers.noreturn=Error
|
||||
org.eclipse.cdt.codan.checkers.noreturn.params={implicit\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={}
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={}
|
||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={unknown\=>false,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
|
||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={}
|
||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={}
|
||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={}
|
||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={macro\=>true,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={paramNot\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={else\=>false,afterelse\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={macro\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={macro\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={macro\=>true,exceptions\=>("@(\#)","$Id")}
|
||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=-Error
|
||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<qnx xmlns="http://www.qnx.com/schemas/application/1.0">
|
||||
<id>com.RetroArch</id>
|
||||
<name>RetroArch</name>
|
||||
<versionNumber>1.0.0</versionNumber>
|
||||
<buildId>1</buildId>
|
||||
<description>Cross-platform entertainment system</description>
|
||||
<author>Team Libretro</author>
|
||||
<initialWindow>
|
||||
<aspectRatio>landscape</aspectRatio>
|
||||
<autoOrients>true</autoOrients>
|
||||
<systemChrome>none</systemChrome>
|
||||
<transparent>false</transparent>
|
||||
</initialWindow>
|
||||
<category>core.games</category>
|
||||
<asset path="../../media/retroarch-96x96.png">icon.png</asset>
|
||||
<asset path="lib">lib</asset>
|
||||
<asset path="../../media/overlays">overlays</asset>
|
||||
<asset path="../../retroarch.cfg">retroarch.cfg</asset>
|
||||
<configuration name="Device-Debug">
|
||||
<platformArchitecture>armle-v7</platformArchitecture>
|
||||
<asset path="Device-Debug/RetroArch" entry="true" type="Qnx/Elf">RetroArch</asset>
|
||||
</configuration>
|
||||
<configuration id="com.qnx.qcc.toolChain.465834703" name="Default"> <platformArchitecture>armle-v7</platformArchitecture>
|
||||
</configuration>
|
||||
|
||||
<icon>
|
||||
<image>icon.png</image>
|
||||
</icon>
|
||||
|
||||
<!-- The splash screen that will appear when your application is launching. Should be 1024x600. -->
|
||||
<!-- <splashscreen></splashscreen> -->
|
||||
<action system="true">run_native</action>
|
||||
|
||||
<action>access_shared</action>
|
||||
<!-- <action>record_audio</action> -->
|
||||
<!-- <action>read_geolocation</action> -->
|
||||
<!-- <action>use_camera</action> -->
|
||||
<!-- <action>access_internet</action> -->
|
||||
<!-- <action>play_audio</action> -->
|
||||
<!-- <action>post_notification</action> -->
|
||||
<!-- <action>set_audio_volume</action> -->
|
||||
<!-- <action>read_device_identifying_information</action> -->
|
||||
|
||||
<env var="LD_LIBRARY_PATH" value="app/native/lib"/>
|
||||
|
||||
</qnx>
|
Loading…
Reference in New Issue
Block a user