Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Added a hint SDL_HINT_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS to prevent…
… turning Apple TV remote swipes into arrow key events
- Loading branch information
Showing
with
29 additions
and
16 deletions.
-
+10
−0
include/SDL_hints.h
-
+19
−16
src/video/uikit/SDL_uikitview.m
|
@@ -355,6 +355,16 @@ extern "C" { |
|
|
*/ |
|
|
#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" |
|
|
|
|
|
/** |
|
|
* \brief A variable controlling whether the Apple TV remote swipes are |
|
|
* translated into arrow key events |
|
|
* |
|
|
* This variable can be set to the following values: |
|
|
* "0" - Swipes are not translated into arrow key events |
|
|
* "1" - Swipes are translated into arrow key events (the default) |
|
|
*/ |
|
|
#define SDL_HINT_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS "SDL_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS" |
|
|
|
|
|
/** |
|
|
* \brief A variable controlling whether the Android / iOS built-in |
|
|
* accelerometer should be listed as a joystick device, rather than listing |
|
|
|
@@ -24,6 +24,7 @@ |
|
|
|
|
|
#include "SDL_uikitview.h" |
|
|
|
|
|
#include "SDL_hints.h" |
|
|
#include "../../events/SDL_mouse_c.h" |
|
|
#include "../../events/SDL_touch_c.h" |
|
|
#include "../../events/SDL_events_c.h" |
|
@@ -42,23 +43,25 @@ @implementation SDL_uikitview { |
|
|
- (instancetype)initWithFrame:(CGRect)frame |
|
|
{ |
|
|
if ((self = [super initWithFrame:frame])) { |
|
|
/* Apple TV Remote touchpad swipe gestures. */ |
|
|
#if TARGET_OS_TV |
|
|
UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeUp.direction = UISwipeGestureRecognizerDirectionUp; |
|
|
[self addGestureRecognizer:swipeUp]; |
|
|
|
|
|
UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeDown.direction = UISwipeGestureRecognizerDirectionDown; |
|
|
[self addGestureRecognizer:swipeDown]; |
|
|
|
|
|
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; |
|
|
[self addGestureRecognizer:swipeLeft]; |
|
|
|
|
|
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeRight.direction = UISwipeGestureRecognizerDirectionRight; |
|
|
[self addGestureRecognizer:swipeRight]; |
|
|
if (SDL_GetHintBoolean(SDL_HINT_APPLE_TV_REMOTE_SWIPES_AS_ARROW_KEYS, SDL_TRUE)) { |
|
|
/* Apple TV Remote touchpad swipe gestures. */ |
|
|
UISwipeGestureRecognizer *swipeUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeUp.direction = UISwipeGestureRecognizerDirectionUp; |
|
|
[self addGestureRecognizer:swipeUp]; |
|
|
|
|
|
UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeDown.direction = UISwipeGestureRecognizerDirectionDown; |
|
|
[self addGestureRecognizer:swipeDown]; |
|
|
|
|
|
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft; |
|
|
[self addGestureRecognizer:swipeLeft]; |
|
|
|
|
|
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)]; |
|
|
swipeRight.direction = UISwipeGestureRecognizerDirectionRight; |
|
|
[self addGestureRecognizer:swipeRight]; |
|
|
} |
|
|
#endif |
|
|
|
|
|
self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; |
|
|