summaryrefslogtreecommitdiff
path: root/apple_remote
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2009-01-20 15:57:31 +0000
committerVladimir Glazounov <vg@openoffice.org>2009-01-20 15:57:31 +0000
commitef6cb13a304ed22d5cf22b7ccf623693d6be8726 (patch)
tree756bace533ce3515d95e55a7463e9f82b6dad61e /apple_remote
parent4b723a6a5dcff166a2e89d54563406ca916d242f (diff)
CWS-TOOLING: integrate CWS appleremote02
2009-01-11 00:33:34 +0100 ericb r266127 : #i97925# start the presentation if and only if an Impress document is focused 2009-01-10 00:02:19 +0100 ericb r266124 : #i96978# cosmetic changes 2009-01-09 23:56:02 +0100 ericb r266123 : #i96978# simplify the code, and make the remote work in windowed mode 2009-01-08 21:25:52 +0100 ericb r266040 : #i96978# avoid to add the eventlistener several times 2009-01-08 14:54:38 +0100 ericb r266013 : #i96978# keep the MEDIA_COMMAND_VOLUME cases for QUARTZ only for the moment 2009-01-08 14:49:17 +0100 ericb r266011 : #i96978# fix wrong comments 2009-01-03 01:42:02 +0100 cloph r265848 : CWS-TOOLING: rebase CWS appleremote02 -> DEV300_m38 (manually, module was left out when using the tooling) 2008-12-30 00:11:30 +0100 ericb r265827 : CWS-TOOLING: rebase CWS appleremote02 to trunk@265758 (milestone: DEV300:m38) 2008-12-29 21:42:14 +0100 ericb r265825 : #i96978# comment the menu in appleremote02 2008-12-29 10:30:40 +0100 ericb r265816 : #i97195# remove the event listener in the dtor 2008-12-23 23:39:55 +0100 ericb r265794 : #i96978# cleanup 2008-12-23 08:49:49 +0100 ericb r265771 : #i96978# add MEDIA_COMMAND_VOLUME_UP and MEDIA_COMMAND_VOLUME_DOWN and the kRemoteButtonMenu (temporarly) 2008-12-23 08:47:27 +0100 ericb r265769 : #i96978# add all cases, for future use 2008-12-20 13:38:25 +0100 ericb r265743 : #i96978# fix a potential breaker (causing warning) 2008-12-20 12:22:15 +0100 ericb r265742 : #i97195# implement the new event listener + callback in Impress, to detect play 2008-12-20 12:20:42 +0100 ericb r265741 : #i97195# add the event listener in SdModule 2008-12-20 12:19:02 +0100 ericb r265740 : #i97195# add the nCommand for MEDIA_COMMAND_PLAY 2008-12-14 18:32:52 +0100 ericb r265456 : #i96978# add the possibility to switch the way to send the PLAY event in debug mode (will be removed once i97195 will be fixed) 2008-12-08 22:18:29 +0100 ericb r265050 : #i96978# removing Carbon dependancy and simplify 2008-12-07 19:54:18 +0100 ericb r264966 : #i96978# implement the new MEDIA_COMMAND events in salinst 2008-12-07 19:53:10 +0100 ericb r264965 : #i96978# add new event type for the Apple Remote on Mac OS X 2008-12-07 19:51:21 +0100 ericb r264964 : #i96978# add gotoLastSlide with MEDIA_COMMAND events (was missing) 2008-12-07 19:46:35 +0100 ericb r264962 : #i96992# fix an error when building with debug enabled 2008-12-07 19:45:04 +0100 ericb r264961 : #i96978# Implement a new event mangement for the Apple remote 2008-12-07 18:59:58 +0100 ericb r264957 : #i96554# fix wrong argument causing warnings 2008-12-07 18:57:56 +0100 ericb r264956 : #i96554# fix wrong argument type 2008-12-07 18:55:22 +0100 ericb r264955 : #i96978# adding a new event type
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;