2024-10-08 18:33:13 +11:00

50 lines
1.8 KiB
Objective-C

//
// GCKeyboardInput.h
// GameController
//
// Copyright © 2020 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <GameController/GCExtern.h>
#import <GameController/GCPhysicalInputProfile.h>
NS_ASSUME_NONNULL_BEGIN
/**
Keyboard profile. Contains the current state of buttons specified in GCKeyCodes.h.
GCKeyboardInput is designed primarly for input polling. For the best text input experience, UIKit/AppKit usage is recommended.
*/
API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0))
@interface GCKeyboardInput : GCPhysicalInputProfile
/**
Set this block if you want to be notified when a value of a key changed. If multiple keys have changed this block will be called
cd for each key that changed.
@param keyboard this keyboard that is being used to map the raw input data into logical values on keyboard keys.
@param key the key that has been modified
@param pressed the state of the key at the moment of block calling
*/
typedef void (^GCKeyboardValueChangedHandler)(GCKeyboardInput *keyboard, GCDeviceButtonInput *key, GCKeyCode keyCode, BOOL pressed);
@property (nonatomic, copy, nullable) GCKeyboardValueChangedHandler keyChangedHandler;
/**
Before querying any key for a value it might be useful to check if any key is actually pressed
*/
@property (nonatomic, readonly, getter = isAnyKeyPressed) BOOL anyKeyPressed;
/**
Alongside general subscript notation of GCPhysicalInputProfile keys can be accessed using this method.
@example [keyboard buttonForKey:GCKeyCode.UpArrow] == keyboard[GCKeyUpArrow]
@param code is a low level key code that can be used for accessing a keyboard button.
@note Full list of supported key constants can be found in GCKeyCodes.h and GCKeyNames.h
*/
- (GCDeviceButtonInput * _Nullable)buttonForKeyCode:(GCKeyCode)code;
@end
NS_ASSUME_NONNULL_END