Sample code. Uses DDHotKey + ShortcutRecorder to let the user define global hotkeys.
Objective-C C
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
DDHotKey
English.lproj
ShortcutRecorder
WhatKeys.xcodeproj
README.markdown
WKHotKeyAssignment.h
WKHotKeyAssignment.m
WKListEditorViewController.h
WKListEditorViewController.m
WKListEditorWindowController.h
WKListEditorWindowController.m
WhatKeys-Info.plist
WhatKeysAppDelegate.h
WhatKeysAppDelegate.m
WhatKeys_Prefix.pch
main.m

README.markdown

[Presented at the joint meeting of CocoaHeads-NYC and the New York FileMaker Developers Group, July 8, 2010. I've heavily edited this since giving the presentation. The original text was much more sparse.]

The notes below are online.

Mixed audience for this meeting

Therefore:

  • Partly an intro to global hotkeys
  • Partly a glimpse into Cocoa development, for newcomers
  • Will show two apps, one trivial and one more advanced

App One: "Hello World" of hot keys

App is called "Hotness".

  • A minimal complete app
  • Bare-bones UI with five buttons (actually a matrix of five button cells)
  • Just one Objective-C class, four methods
  • Hotkey actions are defined in five AppleScript files
  • Uses a third-party library called DDHotKey which makes registering hotkeys very simple

Cocoa patterns and techniques:

  • target-action (the button matrix has a target)
  • delegation (the application object has a delegate)
  • calling AppleScript from Cocoa
  • bringing your application to the front (see the hotkey mapping for Control-0)

App Two: more realistic

App is called "WhatKeys".

  • User can create, modify, and remove hotkey assignments
  • Hotkeys can be mapped to either an AppleScript file or AppleScript code entered directly
  • Like Hotness, uses DDHotKey
  • Uses a third-party library called ShortcutRecorder for entering and displaying keyboard shortcuts

Cocoa patterns and techniques are same as in Hotness, plus:

  • MVC ("Model-View-Controller")
    • a model class (WKHotKeyAssignment)
    • view controller and window controller ("coordinating controllers")
    • array controller ("mediating controller")
  • bindings
  • properties
  • responder chain
  • user defaults and property lists (for saving the user's hotkey assignments)
  • handling NSError

Where to get

Here are links for the source:

To compile the example code you'll need Apple's Developer Tools, which you can get for free here (requires registration). After installing the Dev Tools, double-click an xcodeproj file to open the project in Xcode.