summaryrefslogtreecommitdiff
path: root/apple_remote
diff options
context:
space:
mode:
Diffstat (limited to 'apple_remote')
-rw-r--r--apple_remote/GlobalKeyboardDevice.m2
-rw-r--r--apple_remote/RemoteMainController.m213
-rw-r--r--apple_remote/inc/RemoteMainController.h2
3 files changed, 38 insertions, 179 deletions
diff --git a/apple_remote/GlobalKeyboardDevice.m b/apple_remote/GlobalKeyboardDevice.m
index 9aa04813386f..14bf558a0511 100644
--- a/apple_remote/GlobalKeyboardDevice.m
+++ b/apple_remote/GlobalKeyboardDevice.m
@@ -179,7 +179,7 @@ static OSStatus hotKeyEventHandler(EventHandlerCallRef, EventRef, void*);
hotKeyID.signature = 'PTHk';
hotKeyID.id = (long)keycode;
- err = RegisterEventHotKey(keycode, modifiers, hotKeyID, GetEventDispatcherTarget(), nil, &carbonHotKey );
+ err = RegisterEventHotKey(keycode, modifiers, hotKeyID, GetEventDispatcherTarget(), 0, &carbonHotKey );
if( err )
return NO;
diff --git a/apple_remote/RemoteMainController.m b/apple_remote/RemoteMainController.m
index 3b350c44d191..5b3b893adafc 100644
--- a/apple_remote/RemoteMainController.m
+++ b/apple_remote/RemoteMainController.m
@@ -34,8 +34,6 @@
#import "RemoteControlContainer.h"
#import "MultiClickRemoteBehavior.h"
-
-
// -------------------------------------------------------------------------------------------
// Sample Code 3: Multi Click Behavior and Hold Event Simulation
// -------------------------------------------------------------------------------------------
@@ -56,7 +54,7 @@
// Therefore you can enable or disable all the devices of the container with a single "startListening:" call.
RemoteControlContainer* container = [[RemoteControlContainer alloc] initWithDelegate: remoteControlBehavior];
- if ( [container instantiateAndAddRemoteControlDeviceWithClass: [AppleRemote class]] != nil ) {
+ if ( [container instantiateAndAddRemoteControlDeviceWithClass: [AppleRemote class]] != 0 ) {
#ifdef DEBUG
NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [AppleRemote class]] successfull");
}
@@ -65,7 +63,7 @@
#endif
}
- if ( [container instantiateAndAddRemoteControlDeviceWithClass: [KeyspanFrontRowControl class]] != nil ) {
+ if ( [container instantiateAndAddRemoteControlDeviceWithClass: [KeyspanFrontRowControl class]] != 0 ) {
#ifdef DEBUG
NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [KeyspanFrontRowControl class]] successfull");
}
@@ -74,7 +72,7 @@
#endif
}
- if ( [container instantiateAndAddRemoteControlDeviceWithClass: [GlobalKeyboardDevice class]] != nil ) {
+ if ( [container instantiateAndAddRemoteControlDeviceWithClass: [GlobalKeyboardDevice class]] != 0 ) {
#ifdef DEBUG
NSLog(@"[container instantiateAndAddRemoteControlDeviceWithClass: [GlobalKeyboardDevice class]] successfull");
}
@@ -93,194 +91,53 @@
return self;
}
-// delegate method for the MultiClickRemoteBehavior
-
-// Hack: we define here our events, and post them directly to the NSApp, who is there to receive the notifications.
-// NSEvent class gives several possibilities, and the one above works out of the box :
-//+ keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:
-- (void) postTheEvent: (unichar)theUnicharCode theKeyCode:(long unsigned int)theKeyCode modifierFlags:(int)modifierFlags isARepeat:(BOOL)toBeRepeated
+- (void) postTheEvent: (short int)buttonIdentifier modifierFlags:(int)modifierFlags
{
-
- unichar theKey=theUnicharCode;
- NSString *characters=[NSString stringWithCharacters: &theKey length: 1];
-
[NSApp postEvent:
-
- [NSEvent keyEventWithType:NSKeyDown
- location: NSZeroPoint
- modifierFlags : modifierFlags
- timestamp: 0
- windowNumber: [[NSApp keyWindow] windowNumber]
- context: nil
- characters: characters
- charactersIgnoringModifiers: characters
- isARepeat: toBeRepeated
- keyCode: theKeyCode]
+ [NSEvent otherEventWithType:NSApplicationDefined
+ location:NSZeroPoint
+ modifierFlags:modifierFlags
+ timestamp: 0
+ windowNumber:[[NSApp keyWindow] windowNumber]
+ context:nil
+ subtype:AppleRemoteControlEvent
+ data1: buttonIdentifier
+ data2: 0]
atStart: NO];
}
+
- (void) remoteButton: (RemoteControlEventIdentifier)buttonIdentifier pressedDown: (BOOL) pressedDown clickCount: (unsigned int)clickCount
{
- NSString* buttonName = nil;
NSString* pressed = @"";
-
- SystemUIMode currentMode; // Fullscreen is kUIModeAllHidden, other are "normal mode"
- SystemUIOptions currentModeOptions;
- GetSystemUIMode (&currentMode,&currentModeOptions);
-
+#ifdef DEBUG
+ NSString* buttonName = nil;
+#endif
if (pressedDown)
{
pressed = @"(pressed)";
- // kUIModeAllHidden means fullscreen
- // and pressed only allows F5 in normal mode (and fixes the bounce)
- if ( kUIModeAllHidden == currentMode )
- {
- switch(buttonIdentifier)
- {
- case kRemoteButtonPlus:
- {
- // MEDIA_COMMAND_VOLUME_UP ( see vcl/inc/vcl/cmdevt.hxx )
- buttonName = @"Volume up";
- unichar volumeUpKey=NSUpArrowFunctionKey;//NSPageUpFunctionKey;//1025; //
- [ self postTheEvent: volumeUpKey theKeyCode: 0xF72C modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonMinus:
- {
- // MEDIA_COMMAND_VOLUME_DOWN
- buttonName = @"Volume down";
- unichar volumeDownKey=NSDownArrowFunctionKey;
- [ self postTheEvent: volumeDownKey theKeyCode: 1024 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonMenu:
- {
- // MEDIA_COMMAND_MENU
- buttonName = @"Menu";
- unichar menuKey=NSMenuFunctionKey; //
- [ self postTheEvent: menuKey theKeyCode: 0xF735 modifierFlags: 0 isARepeat:NO ];
-
- }
- break;
-
- case kRemoteButtonPlay:
- {
- // MEDIA_COMMAND_PLAY
- buttonName = @"Play";
- unichar playFunction=NSF5FunctionKey; //
- [ self postTheEvent: playFunction theKeyCode: 96 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonRight:
- {
- // MEDIA_COMMAND_NEXTTRACK
- buttonName = @"Next slide";
- unichar rightArrow=NSRightArrowFunctionKey; //NSRightArrowKey == 124
- [ self postTheEvent: rightArrow theKeyCode: 124 modifierFlags: 0 isARepeat:NO ];
- }
- break;
- case kRemoteButtonLeft:
- {
- // MEDIA_COMMAND_PREVIOUSTRACK
- buttonName = @"Left";
- unichar leftArrow=NSLeftArrowFunctionKey;
- [ self postTheEvent: leftArrow theKeyCode: 123 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonRight_Hold:
- {
- // MEDIA_COMMAND_NEXTTRACK_HOLD
- buttonName = @"Last slide";
- unichar lastSlide=NSEndFunctionKey; // Goes to last slide(value from in offuh/com/sun/star/awt/Key.hdl)
- [ self postTheEvent: lastSlide theKeyCode: 1029 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonLeft_Hold:
- {
- // MEDIA_COMMAND_PREVIOUSTRACK_HOLD
- buttonName = @"First slide";
- unichar firstSlide=NSHomeFunctionKey; // Goes to first slide (value from in offuh/com/sun/star/awt/Key.hdl)
- [ self postTheEvent: firstSlide theKeyCode: 1028 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonPlus_Hold:
- buttonName = @"Volume up holding";
- break;
-
- case kRemoteButtonMinus_Hold:
- buttonName = @"Volume down holding";
- break;
-
- case kRemoteButtonPlay_Hold:
- // MEDIA_COMMAND_PLAY_HOLD
- buttonName = @"Play (sleep mode)";
- break;
-
- case kRemoteButtonMenu_Hold:
- {
- // MEDIA_COMMAND_MENU_HOLD
- buttonName = @"Menu (long)";
- unichar escapeKey=27;
- [ self postTheEvent: escapeKey theKeyCode: 27 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteControl_Switched:
- buttonName = @"Remote Control Switched";
- break;
-
- default:
#ifdef DEBUG
- NSLog(@"Unmapped event for button %d", buttonIdentifier);
-#endif
- break;
- }
- }
- else // normal mode
+ switch(buttonIdentifier)
{
-
- switch(buttonIdentifier)
- {
- case kRemoteButtonPlay:
- {
- // MEDIA_COMMAND_PLAY
- buttonName = @"Play";
- unichar playFunction=NSF5FunctionKey; //
- [ self postTheEvent: playFunction theKeyCode: 772 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteButtonMenu_Hold:
- {
- // MEDIA_COMMAND_MENU_HOLD
- buttonName = @"Menu (long)";
- unichar escapeKey=27;
- [ self postTheEvent: escapeKey theKeyCode: 27 modifierFlags: 0 isARepeat:NO ];
- }
- break;
-
- case kRemoteControl_Switched:
- buttonName = @"Remote Control Switched";
- break;
-
- default:
-#ifdef DEBUG
- NSLog(@"Unmapped event for button %d", buttonIdentifier);
-#endif
- break;
-
-#ifdef DEBUG
- NSLog(@"Normal mode ");
-#endif
- }
+ case kRemoteButtonPlus: buttonName = @"Volume up"; break; // MEDIA_COMMAND_VOLUME_UP ( see vcl/inc/vcl/cmdevt.hxx )
+ case kRemoteButtonMinus: buttonName = @"Volume down"; break; // MEDIA_COMMAND_VOLUME_DOWN
+ case kRemoteButtonMenu: buttonName = @"Menu"; break; // MEDIA_COMMAND_MENU
+ case kRemoteButtonPlay: buttonName = @"Play"; break; // MEDIA_COMMAND_PLAY
+ case kRemoteButtonRight: buttonName = @"Next slide"; break; // MEDIA_COMMAND_NEXTTRACK
+ case kRemoteButtonLeft: buttonName = @"Left"; break; // MEDIA_COMMAND_PREVIOUSTRACK
+ case kRemoteButtonRight_Hold: buttonName = @"Last slide"; break; // MEDIA_COMMAND_NEXTTRACK_HOLD
+ case kRemoteButtonLeft_Hold: buttonName = @"First slide"; break; // MEDIA_COMMAND_PREVIOUSTRACK_HOLD
+ case kRemoteButtonPlus_Hold: buttonName = @"Volume up holding"; break;
+ case kRemoteButtonMinus_Hold: buttonName = @"Volume down holding"; break;
+ case kRemoteButtonPlay_Hold: buttonName = @"Play (sleep mode)"; break; // MEDIA_COMMAND_PLAY_HOLD
+ case kRemoteButtonMenu_Hold: buttonName = @"Menu (long)"; break; // MEDIA_COMMAND_MENU_HOLD
+ case kRemoteControl_Switched: buttonName = @"Remote Control Switched";break;
+
+ default: NSLog(@"Unmapped event for button %d", buttonIdentifier); break;
}
+#endif
+ [ self postTheEvent:buttonIdentifier modifierFlags: 0 ];
}
else // not pressed
{
diff --git a/apple_remote/inc/RemoteMainController.h b/apple_remote/inc/RemoteMainController.h
index 4725352af05c..7143f1f1eda9 100644
--- a/apple_remote/inc/RemoteMainController.h
+++ b/apple_remote/inc/RemoteMainController.h
@@ -30,6 +30,8 @@
#import <Cocoa/Cocoa.h>
+#define AppleRemoteControlEvent 15
+
@class RemoteControl;
@class MultiClickRemoteBehavior;