Skip to content

kinghuang/keynote-linkback-plugin

Repository files navigation

Keynote LinkBack Plugin

The Keynote LinkBack Plugin added LinkBack support to Keynote versions 2 through 4. It masquerades as an effects plugin in Keynote and uses Objective-C method swizzling to inject custom code to handle LinkBack functions.

History

LinkBack was announced by Nisus Software along with The Omni Group and Blacksmith in March 2005. It provides a way for Mac OS X applications to embed objects between LinkBack enabled applications so that shared objects remain editable and dynamically updatable. The concept is similar to OLE on Windows, Publish and Subscribe on classic Mac OS, and OpenDoc. LinkBack comes with a pre-written framework that makes implementation easy in Mac OS X Cocoa applications.

The Keynote LinkBack Plugin takes advantages of the sfxplugin system in Keynote 2 to 4 to add LinkBack support to Apple's presentation software. It was first announced on the linkbackdev mailing list on March 12, 2005. The plugin was last updated around late 2007 for Keynote 4.

Approach

The plugin is built as a standard Cocoa bundle, configured for loading by Keynote as a sfx, presumeably meaning Slide FX. K2LinkBackSupport is declared as the NSPrincipalClass in the bundle's Info.plist. Its class initializer uses Unsanity's Application Enhancer (APE) to patch methods in various Keynote classes. Categories are also used to add methods to classes.

Headers for modified classes were derived using class-dump.

License

Copyright 2014 King Chung Huang

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.