mirror of
https://github.com/libretro/RetroArch
synced 2025-02-28 03:39:59 +00:00
Move Wii and PS3 hid drivers into the common source directory. Use the Wii and PS3 hid drivers on OSX when appropriate. Notably OSX now has WiiMote support.
99 lines
2.4 KiB
C
99 lines
2.4 KiB
C
/* RetroArch - A frontend for libretro.
|
|
* Copyright (C) 2013 - Jason Fetters
|
|
*
|
|
* 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/>.
|
|
*/
|
|
|
|
#include "input/input_common.h"
|
|
#include "general.h"
|
|
|
|
#ifdef IOS
|
|
#include "apple/iOS/bluetooth/btdynamic.c"
|
|
#include "apple/iOS/bluetooth/btpad.c"
|
|
#include "apple/iOS/bluetooth/btpad_queue.c"
|
|
#elif defined(OSX)
|
|
#include "../OSX/hid_pad.c"
|
|
#endif
|
|
|
|
#include "apple/common/hidpad/wiimote.c"
|
|
#include "apple/common/hidpad/hidpad_ps3.c"
|
|
#include "apple/common/hidpad/hidpad_wii.c"
|
|
|
|
|
|
static bool apple_joypad_init(void)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
static bool apple_joypad_query_pad(unsigned pad)
|
|
{
|
|
return pad < MAX_PLAYERS;
|
|
}
|
|
|
|
static void apple_joypad_destroy(void)
|
|
{
|
|
}
|
|
|
|
static bool apple_joypad_button(unsigned port, uint16_t joykey)
|
|
{
|
|
if (joykey == NO_BTN)
|
|
return false;
|
|
|
|
// Check hat.
|
|
if (GET_HAT_DIR(joykey))
|
|
return false;
|
|
else // Check the button
|
|
return (port < MAX_PADS && joykey < 32) ? (g_polled_input_data.pad_buttons[port] & (1 << joykey)) != 0 : false;
|
|
}
|
|
|
|
static int16_t apple_joypad_axis(unsigned port, uint32_t joyaxis)
|
|
{
|
|
if (joyaxis == AXIS_NONE)
|
|
return 0;
|
|
|
|
int16_t val = 0;
|
|
if (AXIS_NEG_GET(joyaxis) < 4)
|
|
{
|
|
val = g_polled_input_data.pad_axis[port][AXIS_NEG_GET(joyaxis)];
|
|
val = (val < 0) ? val : 0;
|
|
}
|
|
else if(AXIS_POS_GET(joyaxis) < 4)
|
|
{
|
|
val = g_polled_input_data.pad_axis[port][AXIS_POS_GET(joyaxis)];
|
|
val = (val > 0) ? val : 0;
|
|
}
|
|
|
|
return val;
|
|
}
|
|
|
|
static void apple_joypad_poll(void)
|
|
{
|
|
}
|
|
|
|
static const char *apple_joypad_name(unsigned joypad)
|
|
{
|
|
(void)joypad;
|
|
return NULL;
|
|
}
|
|
|
|
const rarch_joypad_driver_t apple_joypad = {
|
|
apple_joypad_init,
|
|
apple_joypad_query_pad,
|
|
apple_joypad_destroy,
|
|
apple_joypad_button,
|
|
apple_joypad_axis,
|
|
apple_joypad_poll,
|
|
apple_joypad_name,
|
|
"apple"
|
|
};
|
|
|