Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
229a0de9
Kaydet (Commit)
229a0de9
authored
Eki 29, 2008
tarafından
Rüdiger Timm
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
CWS-TOOLING: integrate CWS appleremote01
üst
0ec279a1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1561 additions
and
0 deletions
+1561
-0
AppleRemote.m
apple_remote/AppleRemote.m
+98
-0
GlobalKeyboardDevice.m
apple_remote/GlobalKeyboardDevice.m
+249
-0
HIDRemoteControlDevice.m
apple_remote/HIDRemoteControlDevice.m
+0
-0
KeyspanFrontRowControl.m
apple_remote/KeyspanFrontRowControl.m
+97
-0
MultiClickRemoteBehavior.m
apple_remote/MultiClickRemoteBehavior.m
+213
-0
RemoteControl.m
apple_remote/RemoteControl.m
+146
-0
RemoteControlContainer.m
apple_remote/RemoteControlContainer.m
+140
-0
RemoteMainController.m
apple_remote/RemoteMainController.m
+0
-0
AppleRemote.h
apple_remote/inc/AppleRemote.h
+40
-0
GlobalKeyboardDevice.h
apple_remote/inc/GlobalKeyboardDevice.h
+54
-0
HIDRemoteControlDevice.h
apple_remote/inc/HIDRemoteControlDevice.h
+67
-0
KeyspanFrontRowControl.h
apple_remote/inc/KeyspanFrontRowControl.h
+42
-0
MultiClickRemoteBehavior.h
apple_remote/inc/MultiClickRemoteBehavior.h
+93
-0
RemoteControl.h
apple_remote/inc/RemoteControl.h
+105
-0
RemoteControlContainer.h
apple_remote/inc/RemoteControlContainer.h
+41
-0
RemoteMainController.h
apple_remote/inc/RemoteMainController.h
+47
-0
makefile.mk
apple_remote/makefile.mk
+87
-0
makefile2.pmk
apple_remote/makefile2.pmk
+35
-0
build.lst
apple_remote/prj/build.lst
+2
-0
d.lst
apple_remote/prj/d.lst
+5
-0
No files found.
apple_remote/AppleRemote.m
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteControlWrapper.m
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same license
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import "AppleRemote.h"
#import <mach/mach.h>
#import <mach/mach_error.h>
#import <IOKit/IOKitLib.h>
#import <IOKit/IOCFPlugIn.h>
#import <IOKit/hid/IOHIDKeys.h>
const
char
*
AppleRemoteDeviceName
=
"AppleIRController"
;
// the WWDC 07 Leopard Build is missing the constant
#ifndef NSAppKitVersionNumber10_4
#define NSAppKitVersionNumber10_4 824
#endif
@implementation
AppleRemote
+
(
const
char
*
)
remoteControlDeviceName
{
return
AppleRemoteDeviceName
;
}
-
(
void
)
setCookieMappingInDictionary
:
(
NSMutableDictionary
*
)
_cookieToButtonMapping
{
// TODO : avoid such magics
if
(
floor
(
NSAppKitVersionNumber
)
<=
NSAppKitVersionNumber10_4
)
{
// 10.4.x Tiger
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlus
]
forKey
:
@"14_12_11_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMinus
]
forKey
:
@"14_13_11_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMenu
]
forKey
:
@"14_7_6_14_7_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlay
]
forKey
:
@"14_8_6_14_8_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonRight
]
forKey
:
@"14_9_6_14_9_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonLeft
]
forKey
:
@"14_10_6_14_10_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonRight_Hold
]
forKey
:
@"14_6_4_2_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonLeft_Hold
]
forKey
:
@"14_6_3_2_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMenu_Hold
]
forKey
:
@"14_6_14_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlay_Hold
]
forKey
:
@"18_14_6_18_14_6_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteControl_Switched
]
forKey
:
@"19_"
];
}
else
{
// 10.5.x Leopard
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlus
]
forKey
:
@"31_29_28_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMinus
]
forKey
:
@"31_30_28_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMenu
]
forKey
:
@"31_20_19_18_31_20_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlay
]
forKey
:
@"31_21_19_18_31_21_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonRight
]
forKey
:
@"31_22_19_18_31_22_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonLeft
]
forKey
:
@"31_23_19_18_31_23_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonRight_Hold
]
forKey
:
@"31_19_18_4_2_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonLeft_Hold
]
forKey
:
@"31_19_18_3_2_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMenu_Hold
]
forKey
:
@"31_19_18_31_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlay_Hold
]
forKey
:
@"35_31_19_18_35_31_19_18_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteControl_Switched
]
forKey
:
@"19_"
];
}
}
-
(
void
)
sendRemoteButtonEvent
:
(
RemoteControlEventIdentifier
)
event
pressedDown
:
(
BOOL
)
pressedDown
{
if
(
pressedDown
==
NO
&&
event
==
kRemoteButtonMenu_Hold
)
{
// There is no seperate event for pressed down on menu hold. We are simulating that event here
[
super
sendRemoteButtonEvent
:
event
pressedDown
:
YES
];
}
[
super
sendRemoteButtonEvent
:
event
pressedDown
:
pressedDown
];
if
(
pressedDown
&&
(
event
==
kRemoteButtonRight
||
event
==
kRemoteButtonLeft
||
event
==
kRemoteButtonPlay
||
event
==
kRemoteButtonMenu
||
event
==
kRemoteButtonPlay_Hold
))
{
// There is no seperate event when the button is being released. We are simulating that event here
[
super
sendRemoteButtonEvent
:
event
pressedDown
:
NO
];
}
}
@end
apple_remote/GlobalKeyboardDevice.m
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* GlobalKeyboardDevice.m
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same license
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import "GlobalKeyboardDevice.h"
#define F1 122
#define F2 120
#define F3 99
#define F4 118
#define F5 96
#define F6 97
#define F7 98
/*
the following default keys are read and shall be used to change the keyboard mapping
mac.remotecontrols.GlobalKeyboardDevice.plus_modifiers
mac.remotecontrols.GlobalKeyboardDevice.plus_keycode
mac.remotecontrols.GlobalKeyboardDevice.minus_modifiers
mac.remotecontrols.GlobalKeyboardDevice.minus_keycode
mac.remotecontrols.GlobalKeyboardDevice.play_modifiers
mac.remotecontrols.GlobalKeyboardDevice.play_keycode
mac.remotecontrols.GlobalKeyboardDevice.left_modifiers
mac.remotecontrols.GlobalKeyboardDevice.left_keycode
mac.remotecontrols.GlobalKeyboardDevice.right_modifiers
mac.remotecontrols.GlobalKeyboardDevice.right_keycode
mac.remotecontrols.GlobalKeyboardDevice.menu_modifiers
mac.remotecontrols.GlobalKeyboardDevice.menu_keycode
mac.remotecontrols.GlobalKeyboardDevice.playhold_modifiers
mac.remotecontrols.GlobalKeyboardDevice.playhold_keycode
*/
static
OSStatus
hotKeyEventHandler
(
EventHandlerCallRef
,
EventRef
,
void
*
);
@implementation
GlobalKeyboardDevice
-
(
id
)
initWithDelegate
:
(
id
)
_remoteControlDelegate
{
if
(
(
self
=
[
super
initWithDelegate
:
_remoteControlDelegate
])
)
{
hotKeyRemoteEventMapping
=
[[
NSMutableDictionary
alloc
]
init
];
unsigned
int
modifiers
=
cmdKey
+
shiftKey
/*+ optionKey*/
+
controlKey
;
[
self
mapRemoteButton
:
kRemoteButtonPlus
defaultKeycode
:
F1
defaultModifiers
:
modifiers
];
[
self
mapRemoteButton
:
kRemoteButtonMinus
defaultKeycode
:
F2
defaultModifiers
:
modifiers
];
[
self
mapRemoteButton
:
kRemoteButtonPlay
defaultKeycode
:
F3
defaultModifiers
:
modifiers
];
[
self
mapRemoteButton
:
kRemoteButtonLeft
defaultKeycode
:
F4
defaultModifiers
:
modifiers
];
[
self
mapRemoteButton
:
kRemoteButtonRight
defaultKeycode
:
F5
defaultModifiers
:
modifiers
];
[
self
mapRemoteButton
:
kRemoteButtonMenu
defaultKeycode
:
F6
defaultModifiers
:
modifiers
];
[
self
mapRemoteButton
:
kRemoteButtonPlay_Hold
defaultKeycode
:
F7
defaultModifiers
:
modifiers
];
}
return
self
;
}
-
(
void
)
dealloc
{
[
hotKeyRemoteEventMapping
release
];
[
super
dealloc
];
}
-
(
void
)
mapRemoteButton
:
(
RemoteControlEventIdentifier
)
remoteButtonIdentifier
defaultKeycode
:
(
unsigned
int
)
defaultKeycode
defaultModifiers
:
(
unsigned
int
)
defaultModifiers
{
NSString
*
defaultsKey
=
NULL
;
switch
(
remoteButtonIdentifier
)
{
case
kRemoteButtonPlus
:
defaultsKey
=
@"plus"
;
break
;
case
kRemoteButtonMinus
:
defaultsKey
=
@"minus"
;
break
;
case
kRemoteButtonMenu
:
defaultsKey
=
@"menu"
;
break
;
case
kRemoteButtonPlay
:
defaultsKey
=
@"play"
;
break
;
case
kRemoteButtonRight
:
defaultsKey
=
@"right"
;
break
;
case
kRemoteButtonLeft
:
defaultsKey
=
@"left"
;
break
;
case
kRemoteButtonPlay_Hold
:
defaultsKey
=
@"playhold"
;
break
;
default
:
#ifdef DEBUG
NSLog
(
@"Unknown global keyboard defaults key for remote button identifier %d"
,
remoteButtonIdentifier
);
#endif
break
;
}
NSNumber
*
modifiersCfg
=
[[
NSUserDefaults
standardUserDefaults
]
objectForKey
:
[
NSString
stringWithFormat
:
@"mac.remotecontrols.GlobalKeyboardDevice.%@_modifiers"
,
defaultsKey
]];
NSNumber
*
keycodeCfg
=
[[
NSUserDefaults
standardUserDefaults
]
objectForKey
:
[
NSString
stringWithFormat
:
@"mac.remotecontrols.GlobalKeyboardDevice.%@_keycode"
,
defaultsKey
]];
unsigned
int
modifiers
=
defaultModifiers
;
if
(
modifiersCfg
)
modifiers
=
[
modifiersCfg
unsignedIntValue
];
unsigned
int
keycode
=
defaultKeycode
;
if
(
keycodeCfg
)
keycode
=
[
keycodeCfg
unsignedIntValue
];
[
self
registerHotKeyCode
:
keycode
modifiers
:
modifiers
remoteEventIdentifier
:
remoteButtonIdentifier
];
}
-
(
void
)
setListeningToRemote
:
(
BOOL
)
value
{
if
(
value
==
[
self
isListeningToRemote
])
return
;
if
(
value
)
{
[
self
startListening
:
self
];
}
else
{
[
self
stopListening
:
self
];
}
}
-
(
BOOL
)
isListeningToRemote
{
return
(
eventHandlerRef
!=
NULL
);
}
-
(
void
)
startListening
:
(
id
)
sender
{
if
(
eventHandlerRef
)
return
;
EventTypeSpec
eventSpec
[
2
]
=
{
{
kEventClassKeyboard
,
kEventHotKeyPressed
},
{
kEventClassKeyboard
,
kEventHotKeyReleased
}
};
InstallEventHandler
(
GetEventDispatcherTarget
(),
(
EventHandlerProcPtr
)
hotKeyEventHandler
,
2
,
eventSpec
,
self
,
&
eventHandlerRef
);
}
-
(
void
)
stopListening
:
(
id
)
sender
{
RemoveEventHandler
(
eventHandlerRef
);
eventHandlerRef
=
NULL
;
}
-
(
BOOL
)
sendsEventForButtonIdentifier
:
(
RemoteControlEventIdentifier
)
identifier
{
NSEnumerator
*
values
=
[
hotKeyRemoteEventMapping
objectEnumerator
];
NSNumber
*
remoteIdentifier
;
while
(
(
remoteIdentifier
=
[
values
nextObject
])
)
{
if
([
remoteIdentifier
unsignedIntValue
]
==
identifier
)
return
YES
;
}
return
NO
;
}
+
(
const
char
*
)
remoteControlDeviceName
{
return
"Keyboard"
;
}
-
(
BOOL
)
registerHotKeyCode
:
(
unsigned
int
)
keycode
modifiers
:
(
unsigned
int
)
modifiers
remoteEventIdentifier
:
(
RemoteControlEventIdentifier
)
identifier
{
OSStatus
err
;
EventHotKeyID
hotKeyID
;
EventHotKeyRef
carbonHotKey
;
hotKeyID
.
signature
=
'
PTHk
'
;
hotKeyID
.
id
=
(
long
)
keycode
;
err
=
RegisterEventHotKey
(
keycode
,
modifiers
,
hotKeyID
,
GetEventDispatcherTarget
(),
nil
,
&
carbonHotKey
);
if
(
err
)
return
NO
;
[
hotKeyRemoteEventMapping
setObject
:
[
NSNumber
numberWithInt
:
identifier
]
forKey
:
[
NSNumber
numberWithUnsignedInt
:
hotKeyID
.
id
]];
return
YES
;
}
/*
- (void)unregisterHotKey: (PTHotKey*)hotKey
{
OSStatus err;
EventHotKeyRef carbonHotKey;
NSValue* key;
if( [[self allHotKeys] containsObject: hotKey] == NO )
return;
carbonHotKey = [self _carbonHotKeyForHotKey: hotKey];
NSAssert( carbonHotKey != nil, @"" );
err = UnregisterEventHotKey( carbonHotKey );
//Watch as we ignore 'err':
key = [NSValue valueWithPointer: carbonHotKey];
[mHotKeys removeObjectForKey: key];
[self _updateEventHandler];
//See that? Completely ignored
}
*/
-
(
RemoteControlEventIdentifier
)
remoteControlEventIdentifierForID
:
(
unsigned
int
)
id
{
NSNumber
*
remoteEventIdentifier
=
[
hotKeyRemoteEventMapping
objectForKey
:[
NSNumber
numberWithUnsignedInt
:
id
]];
return
[
remoteEventIdentifier
unsignedIntValue
];
}
-
(
void
)
sendRemoteButtonEvent
:
(
RemoteControlEventIdentifier
)
event
pressedDown
:
(
BOOL
)
pressedDown
{
[
delegate
sendRemoteButtonEvent
:
event
pressedDown
:
pressedDown
remoteControl
:
self
];
}
static
RemoteControlEventIdentifier
lastEvent
;
static
OSStatus
hotKeyEventHandler
(
EventHandlerCallRef
inHandlerRef
,
EventRef
inEvent
,
void
*
userData
)
{
GlobalKeyboardDevice
*
keyboardDevice
=
(
GlobalKeyboardDevice
*
)
userData
;
EventHotKeyID
hkCom
;
GetEventParameter
(
inEvent
,
kEventParamDirectObject
,
typeEventHotKeyID
,
NULL
,
sizeof
(
hkCom
),
NULL
,
&
hkCom
);
RemoteControlEventIdentifier
identifier
=
[
keyboardDevice
remoteControlEventIdentifierForID
:
hkCom
.
id
];
if
(
identifier
==
0
)
return
noErr
;
BOOL
pressedDown
=
YES
;
if
(
identifier
!=
lastEvent
)
{
lastEvent
=
identifier
;
}
else
{
lastEvent
=
0
;
pressedDown
=
NO
;
}
[
keyboardDevice
sendRemoteButtonEvent
:
identifier
pressedDown
:
pressedDown
];
return
noErr
;
}
@end
apple_remote/HIDRemoteControlDevice.m
0 → 100644
Dosyayı görüntüle @
229a0de9
This diff is collapsed.
Click to expand it.
apple_remote/KeyspanFrontRowControl.m
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* KeyspanFrontRowControl.m
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import "KeyspanFrontRowControl.h"
#import <mach/mach.h>
#import <mach/mach_error.h>
#import <IOKit/IOKitLib.h>
#import <IOKit/IOCFPlugIn.h>
#import <IOKit/hid/IOHIDKeys.h>
@implementation
KeyspanFrontRowControl
-
(
void
)
setCookieMappingInDictionary
:
(
NSMutableDictionary
*
)
_cookieToButtonMapping
{
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlus
]
forKey
:
@"11_18_99_10_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMinus
]
forKey
:
@"11_18_98_10_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonMenu
]
forKey
:
@"11_18_58_10_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonPlay
]
forKey
:
@"11_18_61_10_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonRight
]
forKey
:
@"11_18_96_10_"
];
[
_cookieToButtonMapping
setObject
:[
NSNumber
numberWithInt
:
kRemoteButtonLeft
]
forKey
:
@"11_18_97_10_"
];
/* hold events are not being send by this device
[_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonRight_Hold] forKey:@"14_6_4_2_"];
[_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonLeft_Hold] forKey:@"14_6_3_2_"];
[_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonMenu_Hold] forKey:@"14_6_14_6_"];
[_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteButtonPlay_Sleep] forKey:@"18_14_6_18_14_6_"];
[_cookieToButtonMapping setObject:[NSNumber numberWithInt:kRemoteControl_Switched] forKey:@"19_"];
*/
}
+
(
io_object_t
)
findRemoteDevice
{
CFMutableDictionaryRef
hidMatchDictionary
=
NULL
;
IOReturn
ioReturnValue
=
kIOReturnSuccess
;
io_iterator_t
hidObjectIterator
=
0
;
io_object_t
hidDevice
=
0
;
SInt32
idVendor
=
1741
;
SInt32
idProduct
=
0x420
;
// Set up a matching dictionary to search the I/O Registry by class
// name for all HID class devices
hidMatchDictionary
=
IOServiceMatching
(
kIOHIDDeviceKey
);
CFNumberRef
numberRefVendor
=
CFNumberCreate
(
kCFAllocatorDefault
,
kCFNumberSInt32Type
,
&
idVendor
);
if
(
numberRefVendor
)
{
CFDictionaryAddValue
(
hidMatchDictionary
,
CFSTR
(
kIOHIDVendorIDKey
),
numberRefVendor
);
CFRelease
(
numberRefVendor
);
}
CFNumberRef
numberRefProduct
=
CFNumberCreate
(
kCFAllocatorDefault
,
kCFNumberSInt32Type
,
&
idProduct
);
if
(
numberRefProduct
)
{
CFDictionaryAddValue
(
hidMatchDictionary
,
CFSTR
(
kIOHIDProductIDKey
),
numberRefProduct
);
CFRelease
(
numberRefProduct
);
}
// Now search I/O Registry for matching devices.
ioReturnValue
=
IOServiceGetMatchingServices
(
kIOMasterPortDefault
,
hidMatchDictionary
,
&
hidObjectIterator
);
if
((
ioReturnValue
==
kIOReturnSuccess
)
&&
(
hidObjectIterator
!=
0
))
{
hidDevice
=
IOIteratorNext
(
hidObjectIterator
);
}
// release the iterator
if
(
hidObjectIterator
)
IOObjectRelease
(
hidObjectIterator
);
return
hidDevice
;
}
@end
apple_remote/MultiClickRemoteBehavior.m
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* MultiClickRemoteBehavior.m
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import "MultiClickRemoteBehavior.h"
const
NSTimeInterval
DEFAULT_MAXIMUM_CLICK_TIME_DIFFERENCE
=
0
.
35
;
const
NSTimeInterval
HOLD_RECOGNITION_TIME_INTERVAL
=
0
.
4
;
@implementation
MultiClickRemoteBehavior
-
(
id
)
init
{
if
(
(
self
=
[
super
init
])
)
{
maxClickTimeDifference
=
DEFAULT_MAXIMUM_CLICK_TIME_DIFFERENCE
;
}
return
self
;
}
// Delegates are not retained!
// http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/chapter_6_section_4.html
// Delegating objects do not (and should not) retain their delegates.
// However, clients of delegating objects (applications, usually) are responsible for ensuring that their delegates are around
// to receive delegation messages. To do this, they may have to retain the delegate.
-
(
void
)
setDelegate
:
(
id
)
_delegate
{
if
(
_delegate
&&
(
[
_delegate
respondsToSelector
:
@selector
(
remoteButton
:
pressedDown
:
clickCount
:
)]
==
NO
))
return
;
// return what ?
delegate
=
_delegate
;
}
-
(
id
)
delegate
{
return
delegate
;
}
-
(
BOOL
)
simulateHoldEvent
{
return
simulateHoldEvents
;
}
-
(
void
)
setSimulateHoldEvent
:
(
BOOL
)
value
{
simulateHoldEvents
=
value
;
}
-
(
BOOL
)
simulatesHoldForButtonIdentifier
:
(
RemoteControlEventIdentifier
)
identifier
remoteControl
:
(
RemoteControl
*
)
remoteControl
{
// we do that check only for the normal button identifiers as we would check for hold support for hold events instead
if
(
identifier
>
(
1
<<
EVENT_TO_HOLD_EVENT_OFFSET
))
return
NO
;
return
[
self
simulateHoldEvent
]
&&
[
remoteControl
sendsEventForButtonIdentifier
:
(
identifier
<<
EVENT_TO_HOLD_EVENT_OFFSET
)]
==
NO
;
}
-
(
BOOL
)
clickCountingEnabled
{
return
clickCountEnabledButtons
!=
0
;
}
-
(
void
)
setClickCountingEnabled
:
(
BOOL
)
value
{
if
(
value
)
{
[
self
setClickCountEnabledButtons
:
kRemoteButtonPlus
|
kRemoteButtonMinus
|
kRemoteButtonPlay
|
kRemoteButtonLeft
|
kRemoteButtonRight
|
kRemoteButtonMenu
];
}
else
{
[
self
setClickCountEnabledButtons
:
0
];
}
}
-
(
unsigned
int
)
clickCountEnabledButtons
{
return
clickCountEnabledButtons
;
}
-
(
void
)
setClickCountEnabledButtons
:
(
unsigned
int
)
value
{
clickCountEnabledButtons
=
value
;
}
-
(
NSTimeInterval
)
maximumClickCountTimeDifference
{
return
maxClickTimeDifference
;
}
-
(
void
)
setMaximumClickCountTimeDifference
:
(
NSTimeInterval
)
timeDiff
{
maxClickTimeDifference
=
timeDiff
;
}
-
(
void
)
sendSimulatedHoldEvent
:
(
id
)
time
{
BOOL
startSimulateHold
=
NO
;
RemoteControlEventIdentifier
event
=
lastHoldEvent
;
@synchronized
(
self
)
{
startSimulateHold
=
(
lastHoldEvent
>
0
&&
lastHoldEventTime
==
[
time
doubleValue
]);
}
if
(
startSimulateHold
)
{
lastEventSimulatedHold
=
YES
;
event
=
(
event
<<
EVENT_TO_HOLD_EVENT_OFFSET
);
[
delegate
remoteButton
:
event
pressedDown
:
YES
clickCount
:
1
];
}
}
-
(
void
)
executeClickCountEvent
:
(
NSArray
*
)
values
{
RemoteControlEventIdentifier
event
=
[[
values
objectAtIndex
:
0
]
unsignedIntValue
];
NSTimeInterval
eventTimePoint
=
[[
values
objectAtIndex
:
1
]
doubleValue
];
BOOL
finishedClicking
=
NO
;
int
finalClickCount
=
eventClickCount
;
@synchronized
(
self
)
{
finishedClicking
=
(
event
!=
lastClickCountEvent
||
eventTimePoint
==
lastClickCountEventTime
);
if
(
finishedClicking
)
{
eventClickCount
=
0
;
lastClickCountEvent
=
0
;
lastClickCountEventTime
=
0
;
}
}
if
(
finishedClicking
)
{
[
delegate
remoteButton
:
event
pressedDown
:
YES
clickCount
:
finalClickCount
];
// trigger a button release event, too
[
NSThread
sleepUntilDate
:
[
NSDate
dateWithTimeIntervalSinceNow
:
0
.
1
]];
[
delegate
remoteButton
:
event
pressedDown
:
NO
clickCount
:
finalClickCount
];
}
}
-
(
void
)
sendRemoteButtonEvent
:
(
RemoteControlEventIdentifier
)
event
pressedDown
:
(
BOOL
)
pressedDown
remoteControl
:
(
RemoteControl
*
)
remoteControl
{
if
(
!
delegate
)
return
;
BOOL
clickCountingForEvent
=
([
self
clickCountEnabledButtons
]
&
event
)
==
event
;
if
([
self
simulatesHoldForButtonIdentifier
:
event
remoteControl
:
remoteControl
]
&&
lastClickCountEvent
==
0
)
{
if
(
pressedDown
)
{
// wait to see if it is a hold
lastHoldEvent
=
event
;
lastHoldEventTime
=
[
NSDate
timeIntervalSinceReferenceDate
];
[
self
performSelector
:
@selector
(
sendSimulatedHoldEvent
:)
withObject
:
[
NSNumber
numberWithDouble
:
lastHoldEventTime
]
afterDelay
:
HOLD_RECOGNITION_TIME_INTERVAL
];
return
;
}
else
{
if
(
lastEventSimulatedHold
)
{
// it was a hold
// send an event for "hold release"
event
=
(
event
<<
EVENT_TO_HOLD_EVENT_OFFSET
);
lastHoldEvent
=
0
;
lastEventSimulatedHold
=
NO
;
[
delegate
remoteButton
:
event
pressedDown
:
pressedDown
clickCount
:
1
];
return
;
}
else
{
RemoteControlEventIdentifier
previousEvent
=
lastHoldEvent
;
@synchronized
(
self
)
{
lastHoldEvent
=
0
;
}
// in case click counting is enabled we have to setup the state for that, too
if
(
clickCountingForEvent
)
{
lastClickCountEvent
=
previousEvent
;
lastClickCountEventTime
=
lastHoldEventTime
;
NSNumber
*
eventNumber
;
NSNumber
*
timeNumber
;
eventClickCount
=
1
;
timeNumber
=
[
NSNumber
numberWithDouble
:
lastClickCountEventTime
];
eventNumber
=
[
NSNumber
numberWithUnsignedInt
:
previousEvent
];
NSTimeInterval
diffTime
=
maxClickTimeDifference
-
([
NSDate
timeIntervalSinceReferenceDate
]
-
lastHoldEventTime
);
[
self
performSelector
:
@selector
(
executeClickCountEvent
:)
withObject
:
[
NSArray
arrayWithObjects
:
eventNumber
,
timeNumber
,
nil
]
afterDelay
:
diffTime
];
// we do not return here because we are still in the press-release event
// that will be consumed below
}
else
{
// trigger the pressed down event that we consumed first
[
delegate
remoteButton
:
event
pressedDown
:
YES
clickCount
:
1
];
}
}
}
}
if
(
clickCountingForEvent
)
{
if
(
pressedDown
==
NO
)
return
;
NSNumber
*
eventNumber
;
NSNumber
*
timeNumber
;
@synchronized
(
self
)
{
lastClickCountEventTime
=
[
NSDate
timeIntervalSinceReferenceDate
];
if
(
lastClickCountEvent
==
event
)
{
eventClickCount
=
eventClickCount
+
1
;
}
else
{
eventClickCount
=
1
;
}
lastClickCountEvent
=
event
;
timeNumber
=
[
NSNumber
numberWithDouble
:
lastClickCountEventTime
];
eventNumber
=
[
NSNumber
numberWithUnsignedInt
:
event
];
}
[
self
performSelector
:
@selector
(
executeClickCountEvent
:)
withObject
:
[
NSArray
arrayWithObjects
:
eventNumber
,
timeNumber
,
nil
]
afterDelay
:
maxClickTimeDifference
];
}
else
{
[
delegate
remoteButton
:
event
pressedDown
:
pressedDown
clickCount
:
1
];
}
}
@end
apple_remote/RemoteControl.m
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteControl.m
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import "RemoteControl.h"
// notifaction names that are being used to signal that an application wants to
// have access to the remote control device or if the application has finished
// using the remote control device
NSString
*
REQUEST_FOR_REMOTE_CONTROL_NOTIFCATION
=
@"mac.remotecontrols.RequestForRemoteControl"
;
NSString
*
FINISHED_USING_REMOTE_CONTROL_NOTIFICATION
=
@"mac.remotecontrols.FinishedUsingRemoteControl"
;
// keys used in user objects for distributed notifications
NSString
*
kRemoteControlDeviceName
=
@"RemoteControlDeviceName"
;
NSString
*
kApplicationIdentifier
=
@"CFBundleIdentifier"
;
// bundle identifier of the application that should get access to the remote control
// this key is being used in the FINISHED notification only
NSString
*
kTargetApplicationIdentifier
=
@"TargetBundleIdentifier"
;
@implementation
RemoteControl
// returns nil if the remote control device is not available
-
(
id
)
initWithDelegate
:
(
id
)
_remoteControlDelegate
{
if
(
(
self
=
[
super
init
])
)
{
delegate
=
[
_remoteControlDelegate
retain
];
#ifdef DEBUG
NSLog
(
@"RemoteControl initWithDelegate ok"
);
#endif
}
return
self
;
}
-
(
void
)
dealloc
{
[
delegate
release
];
[
super
dealloc
];
}
-
(
void
)
setListeningToRemote
:
(
BOOL
)
value
{
#ifdef DEBUG
NSLog
(
@"setListeningToRemote ok"
);
#endif
}
-
(
BOOL
)
isListeningToRemote
{
return
NO
;
}
-
(
void
)
startListening
:
(
id
)
sender
{
#ifdef DEBUG
NSLog
(
@"startListening ok"
);
#endif
}
-
(
void
)
stopListening
:
(
id
)
sender
{
#ifdef DEBUG
NSLog
(
@"stopListening ok"
);
#endif
}
-
(
BOOL
)
isOpenInExclusiveMode
{
return
YES
;
}
-
(
void
)
setOpenInExclusiveMode
:
(
BOOL
)
value
{
}
-
(
BOOL
)
sendsEventForButtonIdentifier
:
(
RemoteControlEventIdentifier
)
identifier
{
#ifdef DEBUG
NSLog
(
@"sending event for button identifier
\n
"
);
#endif
return
YES
;
}
+
(
void
)
sendDistributedNotification
:
(
NSString
*
)
notificationName
targetBundleIdentifier
:
(
NSString
*
)
targetIdentifier
{
if
(
(
self
=
[
super
init
])
)
{
NSDictionary
*
userInfo
=
[
NSDictionary
dictionaryWithObjectsAndKeys
:
[
NSString
stringWithCString
:[
self
remoteControlDeviceName
]
encoding
:
NSASCIIStringEncoding
],
kRemoteControlDeviceName
/* key = RemoteControlDeviceName -> OK */
,
[[
NSBundle
mainBundle
]
bundleIdentifier
]
/* value = org.openoffice.script -> OK */
,
kApplicationIdentifier
/* key = CFBundleIdentifier -> OK */
,
targetIdentifier
/*value = AppleIRController -> OK */
,
kTargetApplicationIdentifier
/*targetBundleIdentifier -> does not appear, since the peer is nil*/
,
nil
];
#ifdef DEBUG
// Debug purpose: returns all the existing dictionary keys.
NSString
*
s
;
NSEnumerator
*
e
=
[
userInfo
keyEnumerator
];
while
(
(
s
=
[
e
nextObject
])
)
{
NSLog
(
@"key = %@ "
,
s
);
}
NSEnumerator
*
f
=
[
userInfo
objectEnumerator
];
while
(
(
s
=
[
f
nextObject
])
)
{
NSLog
(
@"value = %@ "
,
s
);
}
NSLog
(
@"sendDistributedNotification ..."
);
#endif
[[
NSDistributedNotificationCenter
defaultCenter
]
postNotificationName
:
notificationName
object
:
nil
userInfo
:
userInfo
deliverImmediately
:
YES
];
}
}
+
(
void
)
sendFinishedNotifcationForAppIdentifier
:
(
NSString
*
)
identifier
{
[
self
sendDistributedNotification
:
FINISHED_USING_REMOTE_CONTROL_NOTIFICATION
targetBundleIdentifier
:
identifier
];
#ifdef DEBUG
NSLog
(
@"sendFinishedNotifcationForAppIdentifier ..."
);
#endif
}
+
(
void
)
sendRequestForRemoteControlNotification
{
[
self
sendDistributedNotification
:
REQUEST_FOR_REMOTE_CONTROL_NOTIFCATION
targetBundleIdentifier
:
nil
];
#ifdef DEBUG
NSLog
(
@"sendRequestForRemoteControlNotification ..."
);
#endif
}
+
(
const
char
*
)
remoteControlDeviceName
{
return
NULL
;
}
@end
apple_remote/RemoteControlContainer.m
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteControlContainer.m
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import "RemoteControlContainer.h"
@implementation
RemoteControlContainer
-
(
id
)
initWithDelegate
:
(
id
)
_remoteControlDelegate
{
if
(
(
self
=
[
super
initWithDelegate
:
_remoteControlDelegate
])
)
{
remoteControls
=
[[
NSMutableArray
alloc
]
init
];
#ifdef DEBUG
NSLog
(
@"RemoteControlContainer initWithDelegate ok"
);
}
else
{
NSLog
(
@"RemoteControlContainer initWithDelegate failed"
);
#endif
}
return
self
;
}
-
(
void
)
dealloc
{
[
self
stopListening
:
self
];
[
remoteControls
release
];
[
super
dealloc
];
}
-
(
BOOL
)
instantiateAndAddRemoteControlDeviceWithClass
:
(
Class
)
clazz
{
BOOL
toReturn
=
NO
;
RemoteControl
*
remoteControl
=
[[
clazz
alloc
]
initWithDelegate
:
delegate
];
if
(
remoteControl
)
{
[
remoteControls
addObject
:
remoteControl
];
[
remoteControl
addObserver
:
self
forKeyPath
:
@"listeningToRemote"
options
:
NSKeyValueObservingOptionNew
context
:
nil
];
toReturn
=
YES
;
}
#ifdef DEBUG
else
{
NSLog
(
@"RemoteControlContainer instantiateAndAddRemoteControlDeviceWithClass failed"
);
toReturn
=
NO
;
}
#endif
return
toReturn
;
}
-
(
unsigned
int
)
count
{
return
[
remoteControls
count
];
}
-
(
void
)
reset
{
[
self
willChangeValueForKey
:
@"listeningToRemote"
];
[
self
didChangeValueForKey
:
@"listeningToRemote"
];
#ifdef DEBUG
// debug purpose
NSLog
(
@"reset... (after listening to remote)"
);
#endif
}
-
(
void
)
observeValueForKeyPath
:
(
NSString
*
)
keyPath
ofObject
:
(
id
)
object
change
:
(
NSDictionary
*
)
change
context
:
(
void
*
)
context
{
[
self
reset
];
}
-
(
void
)
setListeningToRemote
:
(
BOOL
)
value
{
int
i
;
for
(
i
=
0
;
i
<
[
remoteControls
count
];
i
++
)
{
[[
remoteControls
objectAtIndex
:
i
]
setListeningToRemote
:
value
];
}
if
(
value
&&
value
!=
[
self
isListeningToRemote
])
[
self
performSelector
:
@selector
(
reset
)
withObject
:
nil
afterDelay
:
0
.
01
];
}
-
(
BOOL
)
isListeningToRemote
{
int
i
;
for
(
i
=
0
;
i
<
[
remoteControls
count
];
i
++
)
{
if
([[
remoteControls
objectAtIndex
:
i
]
isListeningToRemote
])
{
return
YES
;
}
}
return
NO
;
}
-
(
void
)
startListening
:
(
id
)
sender
{
#ifdef DEBUG
NSLog
(
@"startListening to events... "
);
#endif
int
i
;
for
(
i
=
0
;
i
<
[
remoteControls
count
];
i
++
)
{
[[
remoteControls
objectAtIndex
:
i
]
startListening
:
sender
];
}
}
-
(
void
)
stopListening
:
(
id
)
sender
{
#ifdef DEBUG
NSLog
(
@"stopListening to events... "
);
#endif
int
i
;
for
(
i
=
0
;
i
<
[
remoteControls
count
];
i
++
)
{
[[
remoteControls
objectAtIndex
:
i
]
stopListening
:
sender
];
}
}
-
(
BOOL
)
isOpenInExclusiveMode
{
BOOL
mode
=
YES
;
int
i
;
for
(
i
=
0
;
i
<
[
remoteControls
count
];
i
++
)
{
mode
=
mode
&&
([[
remoteControls
objectAtIndex
:
i
]
isOpenInExclusiveMode
]);
}
return
mode
;
}
-
(
void
)
setOpenInExclusiveMode
:
(
BOOL
)
value
{
int
i
;
for
(
i
=
0
;
i
<
[
remoteControls
count
];
i
++
)
{
[[
remoteControls
objectAtIndex
:
i
]
setOpenInExclusiveMode
:
value
];
}
}
@end
apple_remote/RemoteMainController.m
0 → 100644
Dosyayı görüntüle @
229a0de9
This diff is collapsed.
Click to expand it.
apple_remote/inc/AppleRemote.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteControlWrapper.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same license
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import "HIDRemoteControlDevice.h"
/* Interacts with the Apple Remote Control HID device
The class is not thread safe
*/
@interface
AppleRemote
:
HIDRemoteControlDevice
{
}
@end
apple_remote/inc/GlobalKeyboardDevice.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* GlobalKeyboardDevice.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same license
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>
#import "RemoteControl.h"
/*
This class registers for a number of global keyboard shortcuts to simulate a remote control
*/
@interface
GlobalKeyboardDevice
:
RemoteControl
{
NSMutableDictionary
*
hotKeyRemoteEventMapping
;
EventHandlerRef
eventHandlerRef
;
}
-
(
void
)
mapRemoteButton
:
(
RemoteControlEventIdentifier
)
remoteButtonIdentifier
defaultKeycode
:
(
unsigned
int
)
defaultKeycode
defaultModifiers
:
(
unsigned
int
)
defaultModifiers
;
-
(
BOOL
)
registerHotKeyCode
:
(
unsigned
int
)
keycode
modifiers
:
(
unsigned
int
)
modifiers
remoteEventIdentifier
:
(
RemoteControlEventIdentifier
)
identifier
;
@end
apple_remote/inc/HIDRemoteControlDevice.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* HIDRemoteControlDevice.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same license
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import <IOKit/hid/IOHIDLib.h>
#import "RemoteControl.h"
/*
Base class for HID based remote control devices
*/
@interface
HIDRemoteControlDevice
:
RemoteControl
{
IOHIDDeviceInterface
**
hidDeviceInterface
;
// see IOKit/hid/IOHIDLib.h
IOHIDQueueInterface
**
queue
;
// IOKit/hid/IOHIDLib.h
NSMutableArray
*
allCookies
;
NSMutableDictionary
*
cookieToButtonMapping
;
CFRunLoopSourceRef
eventSource
;
BOOL
fixSecureEventInputBug
;
BOOL
openInExclusiveMode
;
BOOL
processesBacklog
;
int
supportedButtonEvents
;
}
// When your application needs to much time on the main thread when processing an event other events
// may already be received which are put on a backlog. As soon as your main thread
// has some spare time this backlog is processed and may flood your delegate with calls.
// Backlog processing is turned off by default.
-
(
BOOL
)
processesBacklog
;
-
(
void
)
setProcessesBacklog
:
(
BOOL
)
value
;
// methods that should be overwritten by subclasses
-
(
void
)
setCookieMappingInDictionary
:
(
NSMutableDictionary
*
)
cookieToButtonMapping
;
-
(
void
)
sendRemoteButtonEvent
:
(
RemoteControlEventIdentifier
)
event
pressedDown
:
(
BOOL
)
pressedDown
;
+
(
BOOL
)
isRemoteAvailable
;
@end
apple_remote/inc/KeyspanFrontRowControl.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* KeyspanFrontRowControl.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import "HIDRemoteControlDevice.h"
/* Interacts with the Keyspan FrontRow Remote Control HID device
The class is not thread safe
*/
@interface
KeyspanFrontRowControl
:
HIDRemoteControlDevice
{
}
@end
apple_remote/inc/MultiClickRemoteBehavior.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* MultiClickRemoteBehavior.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import "RemoteControl.h"
/**
A behavior that adds multiclick and hold events on top of a device.
Events are generated and send to a delegate
*/
@interface
MultiClickRemoteBehavior
:
NSObject
{
id
delegate
;
// state for simulating plus/minus hold
BOOL
simulateHoldEvents
;
BOOL
lastEventSimulatedHold
;
RemoteControlEventIdentifier
lastHoldEvent
;
NSTimeInterval
lastHoldEventTime
;
// state for multi click
unsigned
int
clickCountEnabledButtons
;
NSTimeInterval
maxClickTimeDifference
;
NSTimeInterval
lastClickCountEventTime
;
RemoteControlEventIdentifier
lastClickCountEvent
;
unsigned
int
eventClickCount
;
}
-
(
id
)
init
;
// Delegates are not retained
-
(
void
)
setDelegate
:
(
id
)
delegate
;
-
(
id
)
delegate
;
// Simulating hold events does deactivate sending of individual requests for pressed down/released.
// Instead special hold events are being triggered when the user is pressing and holding a button for a small period.
// Simulation is activated only for those buttons and remote control that do not have a seperate event already
-
(
BOOL
)
simulateHoldEvent
;
-
(
void
)
setSimulateHoldEvent
:
(
BOOL
)
value
;
// click counting makes it possible to recognize if the user has pressed a button repeatedly
// click counting does delay each event as it has to wait if there is another event (second click)
// therefore there is a slight time difference (maximumClickCountTimeDifference) between a single click
// of the user and the call of your delegate method
// click counting can be enabled individually for specific buttons. Use the property clickCountEnableButtons to
// set the buttons for which click counting shall be enabled
-
(
BOOL
)
clickCountingEnabled
;
-
(
void
)
setClickCountingEnabled
:
(
BOOL
)
value
;
-
(
unsigned
int
)
clickCountEnabledButtons
;
-
(
void
)
setClickCountEnabledButtons
:
(
unsigned
int
)
value
;
// the maximum time difference till which clicks are recognized as multi clicks
-
(
NSTimeInterval
)
maximumClickCountTimeDifference
;
-
(
void
)
setMaximumClickCountTimeDifference
:
(
NSTimeInterval
)
timeDiff
;
@end
/*
* Method definitions for the delegate of the MultiClickRemoteBehavior class
*/
@interface
NSObject
(
MultiClickRemoteBehaviorDelegate
)
-
(
void
)
remoteButton
:
(
RemoteControlEventIdentifier
)
buttonIdentifier
pressedDown
:
(
BOOL
)
pressedDown
clickCount
:
(
unsigned
int
)
count
;
@end
apple_remote/inc/RemoteControl.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteControl.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
// notifaction names that are being used to signal that an application wants to
// have access to the remote control device or if the application has finished
// using the remote control device
extern
NSString
*
REQUEST_FOR_REMOTE_CONTROL_NOTIFCATION
;
extern
NSString
*
FINISHED_USING_REMOTE_CONTROL_NOTIFICATION
;
// keys used in user objects for distributed notifications
extern
NSString
*
kRemoteControlDeviceName
;
extern
NSString
*
kApplicationIdentifier
;
extern
NSString
*
kTargetApplicationIdentifier
;
// we have a 6 bit offset to make a hold event out of a normal event
#define EVENT_TO_HOLD_EVENT_OFFSET 6
@class
RemoteControl
;
typedef
enum
_RemoteControlEventIdentifier
{
// normal events
kRemoteButtonPlus
=
1
<<
1
,
kRemoteButtonMinus
=
1
<<
2
,
kRemoteButtonMenu
=
1
<<
3
,
kRemoteButtonPlay
=
1
<<
4
,
kRemoteButtonRight
=
1
<<
5
,
kRemoteButtonLeft
=
1
<<
6
,
// hold events
kRemoteButtonPlus_Hold
=
1
<<
7
,
kRemoteButtonMinus_Hold
=
1
<<
8
,
kRemoteButtonMenu_Hold
=
1
<<
9
,
kRemoteButtonPlay_Hold
=
1
<<
10
,
kRemoteButtonRight_Hold
=
1
<<
11
,
kRemoteButtonLeft_Hold
=
1
<<
12
,
// special events (not supported by all devices)
kRemoteControl_Switched
=
1
<<
13
,
}
RemoteControlEventIdentifier
;
@interface
NSObject
(
RemoteControlDelegate
)
-
(
void
)
sendRemoteButtonEvent
:
(
RemoteControlEventIdentifier
)
event
pressedDown
:
(
BOOL
)
pressedDown
remoteControl
:
(
RemoteControl
*
)
remoteControl
;
@end
/*
Base Interface for Remote Control devices
*/
@interface
RemoteControl
:
NSObject
{
id
delegate
;
}
// returns nil if the remote control device is not available
-
(
id
)
initWithDelegate
:
(
id
)
remoteControlDelegate
;
-
(
void
)
setListeningToRemote
:
(
BOOL
)
value
;
-
(
BOOL
)
isListeningToRemote
;
-
(
BOOL
)
isOpenInExclusiveMode
;
-
(
void
)
setOpenInExclusiveMode
:
(
BOOL
)
value
;
-
(
void
)
startListening
:
(
id
)
sender
;
-
(
void
)
stopListening
:
(
id
)
sender
;
// is this remote control sending the given event?
-
(
BOOL
)
sendsEventForButtonIdentifier
:
(
RemoteControlEventIdentifier
)
identifier
;
// sending of notifications between applications
+
(
void
)
sendFinishedNotifcationForAppIdentifier
:
(
NSString
*
)
identifier
;
+
(
void
)
sendRequestForRemoteControlNotification
;
// name of the device
+
(
const
char
*
)
remoteControlDeviceName
;
@end
apple_remote/inc/RemoteControlContainer.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteControlContainer.h
* RemoteControlWrapper
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
#import "RemoteControl.h"
@interface
RemoteControlContainer
:
RemoteControl
{
NSMutableArray
*
remoteControls
;
}
-
(
BOOL
)
instantiateAndAddRemoteControlDeviceWithClass
:
(
Class
)
clazz
;
-
(
unsigned
int
)
count
;
@end
apple_remote/inc/RemoteMainController.h
0 → 100644
Dosyayı görüntüle @
229a0de9
/*****************************************************************************
* RemoteMainController.h
*
*
* Created by Martin Kahr on 11.03.06 under a MIT-style license.
* Copyright (c) 2006 martinkahr.com. All rights reserved.
*
* Code modified and adapted to OpenOffice.org
* by Eric Bachard on 11.08.2008 under the same License
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*****************************************************************************/
#import <Cocoa/Cocoa.h>
@class
RemoteControl
;
@class
MultiClickRemoteBehavior
;
//static void sendTheEvent( unichar, int );
@interface
MainController
:
NSObject
{
@public
// else remoteControl is not reachable from GetSalData()->mpMainController
RemoteControl
*
remoteControl
;
@private
MultiClickRemoteBehavior
*
remoteControlBehavior
;
}
-
(
RemoteControl
*
)
remoteControl
;
-
(
MultiClickRemoteBehavior
*
)
remoteBehavior
;
@end
apple_remote/makefile.mk
0 → 100644
Dosyayı görüntüle @
229a0de9
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.2 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org 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 Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
PRJ
=
.
PRJNAME
=
external
TARGET
=
AppleRemote
ENABLE_EXCEPTIONS
=
TRUE
# --- Settings -----------------------------------------------------
.INCLUDE
:
settings.mk
.INCLUDE
:
$(PRJ)$/makefile2.pmk
# --- Files --------------------------------------------------------
.IF
"$(GUIBASE)"
!=
"aqua"
dummy
:
@echo
"Nothing to build for GUIBASE $(GUIBASE)"
.ELSE
# "$(GUIBASE)"!="aqua"
SHL1STDLIBS
+=
\
-framework
Cocoa
-framework
Carbon
-framework
IOKit
LIB1FILES
+=
\
$(SLB)$/
AppleRemote.lib
SLOFILES
=
\
$(SLO)$/
KeyspanFrontRowControl.obj
\
$(SLO)$/
AppleRemote.obj
\
$(SLO)$/
RemoteControl.obj
\
$(SLO)$/
RemoteControlContainer.obj
\
$(SLO)$/
GlobalKeyboardDevice.obj
\
$(SLO)$/
HIDRemoteControlDevice.obj
\
$(SLO)$/
MultiClickRemoteBehavior.obj
\
$(SLO)$/
RemoteMainController.obj
SHL1TARGET
=
$(TARGET)$(DLLPOSTFIX)
SHL1OBJS
=
$(SLOFILES)
OUT2INC
=
\
$(BUILDDIR)$/
KeyspaFrontRowControl.h
\
$(BUILDDIR)$/
AppleRemote.h
\
$(BUILDDIR)$/
RemoteControl.h
\
$(BUILDDIR)$/
RemoteControlContainer.h
\
$(BUILDDIR)$/
GlobalKeyboardDevice.h
\
$(BUILDDIR)$/
HIDRemoteControlDevice.h
\
$(BUILDDIR)$/
MultiClickRemoteBehavior.h
\
$(BUILDDIR)$/
RemoteMainController.h
.ENDIF
# "$(GUIBASE)"!="aqua"
# --- Targets ------------------------------------------------------
.INCLUDE
:
target.mk
apple_remote/makefile2.pmk
0 → 100644
Dosyayı görüntüle @
229a0de9
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: makefile2.pmk,v $
#
# $Revision: 1.1 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org 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 Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
.IF "$(GUIBASE)"=="aqua"
OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions
CFLAGSCXX+=$(OBJCXXFLAGS)
.ENDIF # "$(GUIBASE)"=="aqua"
apple_remote/prj/build.lst
0 → 100644
Dosyayı görüntüle @
229a0de9
ar apple_remote: solenv soltools NULL
ar apple_remote nmake - u ar_arem NULL
apple_remote/prj/d.lst
0 → 100644
Dosyayı görüntüle @
229a0de9
mkdir: %_DEST%\inc%_EXT%\apple_remote
..\inc\*.h %_DEST%\inc%_EXT%\apple_remote\*
..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment