<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>BBAppSessionLoginState.h</filename>
    </added>
    <added>
      <filename>BBAppSessionLoginState.m</filename>
    </added>
    <added>
      <filename>English.lproj/MainMenu.xib</filename>
    </added>
    <added>
      <filename>NSAppleEventDescriptor-Extensions.h</filename>
    </added>
    <added>
      <filename>NSAppleEventDescriptor-Extensions.m</filename>
    </added>
    <added>
      <filename>ODBEditor.h</filename>
    </added>
    <added>
      <filename>ODBEditor.m</filename>
    </added>
    <added>
      <filename>ODBEditorSuite.h</filename>
    </added>
    <added>
      <filename>PTHotKey.h</filename>
    </added>
    <added>
      <filename>PTHotKey.m</filename>
    </added>
    <added>
      <filename>PTHotKeyCenter.h</filename>
    </added>
    <added>
      <filename>PTHotKeyCenter.m</filename>
    </added>
    <added>
      <filename>PTKeyCodeTranslator.h</filename>
    </added>
    <added>
      <filename>PTKeyCodeTranslator.m</filename>
    </added>
    <added>
      <filename>PTKeyCombo.h</filename>
    </added>
    <added>
      <filename>PTKeyCombo.m</filename>
    </added>
    <added>
      <filename>QCAppDelegate.h</filename>
    </added>
    <added>
      <filename>QCAppDelegate.m</filename>
    </added>
    <added>
      <filename>QCUIElement.h</filename>
    </added>
    <added>
      <filename>QCUIElement.m</filename>
    </added>
    <added>
      <filename>QuickCursor-Info.plist</filename>
    </added>
    <added>
      <filename>QuickCursor.icns</filename>
    </added>
    <added>
      <filename>StatusItemIcon.pdf</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/.svn/dir-prop-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/.svn/text-base/LICENSE.txt.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/.svn/text-base/ShortcutRecorder_Prefix.pch.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/.svn/text-base/AppController.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/.svn/text-base/AppController.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/.svn/text-base/Info.plist.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/.svn/text-base/main.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/AppController.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/AppController.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/.svn/prop-base/InfoPlist.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/.svn/text-base/InfoPlist.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/.svn/text-base/Localizable.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/.svn/text-base/MainMenu.xib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/InfoPlist.strings</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/Localizable.strings</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/prop-base/keyedobjects.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/text-base/classes.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/text-base/data.dependency.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/text-base/info.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/.svn/text-base/keyedobjects.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/classes.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/data.dependency</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/info.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.nib/keyedobjects.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/English.lproj/MainMenu.xib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTHotKey.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTHotKey.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTHotKeyCenter.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTHotKeyCenter.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTKeyCodeTranslator.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTKeyCodeTranslator.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTKeyCombo.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/.svn/text-base/PTKeyCombo.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTHotKey.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTHotKey.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTHotKeyCenter.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTHotKeyCenter.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTKeyCodeTranslator.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTKeyCodeTranslator.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTKeyCombo.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/HotKey/PTKeyCombo.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/Info.plist</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Demo/main.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Documentation/.draft.rtf</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Documentation/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Documentation/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Documentation/.svn/text-base/.draft.rtf.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Documentation/.svn/text-base/ShortcutRecorder.html.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Documentation/ShortcutRecorder.html</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Dutch.lproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Dutch.lproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Dutch.lproj/.svn/prop-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Dutch.lproj/.svn/text-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Dutch.lproj/ShortcutRecorder.strings</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/English.lproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/English.lproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/English.lproj/.svn/prop-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/English.lproj/.svn/text-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/English.lproj/ShortcutRecorder.strings</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/prop-base/SR_LeopardView.classdescription.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/text-base/SR_LeopardFramework-Info.plist.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/text-base/SR_LeopardView.classdescription.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/text-base/SR_LeopardView.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/text-base/SR_LeopardView.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/.svn/text-base/ShortcutRecorder.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/SR_LeopardFramework-Info.plist</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/SR_LeopardView.classdescription</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/SR_LeopardView.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/SR_LeopardView.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Framework/ShortcutRecorder.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/German.lproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/German.lproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/German.lproj/.svn/text-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/German.lproj/ShortcutRecorder.strings</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/prop-base/SRRemoveShortcut.tif.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/prop-base/SRRemoveShortcutPressed.tif.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/prop-base/SRRemoveShortcutRollover.tif.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/prop-base/SRSnapback.tiff.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/text-base/SRRemoveShortcut.tif.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/text-base/SRRemoveShortcutPressed.tif.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/text-base/SRRemoveShortcutRollover.tif.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/.svn/text-base/SRSnapback.tiff.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/SRRemoveShortcut.tif</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/SRRemoveShortcutPressed.tif</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/SRRemoveShortcutRollover.tif</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Images/SRSnapback.tiff</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/LICENSE.txt</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/prop-base/SRRecorderControl.classdescription.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/Info.plist.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SRRecorderControl+LeopardIB.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SRRecorderControl.classdescription.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SR_Leopard.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SR_Leopard.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SR_LeopardInspector.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SR_LeopardInspector.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/.svn/text-base/SR_Leopard_Prefix.pch.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/.svn/prop-base/InfoPlist.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/.svn/text-base/InfoPlist.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/InfoPlist.strings</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/.svn/prop-base/keyedobjects.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/.svn/text-base/designable.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/.svn/text-base/keyedobjects.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/designable.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardInspector.nib/keyedobjects.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/.svn/prop-base/keyedobjects.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/.svn/text-base/designable.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/.svn/text-base/keyedobjects.nib.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/designable.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/English.lproj/SR_LeopardLibrary.nib/keyedobjects.nib</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/Info.plist</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SRRecorderControl+LeopardIB.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SRRecorderControl.classdescription</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SR_Leopard.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SR_Leopard.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SR_LeopardInspector.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SR_LeopardInspector.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Plugin/SR_Leopard_Prefix.pch</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/.svn/text-base/ddauer.mode1.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/.svn/text-base/ddauer.pbxuser.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/.svn/text-base/project.pbxproj.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/ddauer.mode1</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder.xcodeproj/project.pbxproj</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/ShortcutRecorder_Prefix.pch</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRCommon.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRCommon.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRKeyCodeTransformer.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRKeyCodeTransformer.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRRecorderCell.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRRecorderCell.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRRecorderControl.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRRecorderControl.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRValidator.h.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/.svn/text-base/SRValidator.m.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRCommon.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRCommon.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRKeyCodeTransformer.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRKeyCodeTransformer.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRRecorderCell.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRRecorderCell.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRRecorderControl.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRRecorderControl.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRValidator.h</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/Source/SRValidator.m</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/sv.lproj/.svn/all-wcprops</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/sv.lproj/.svn/entries</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/sv.lproj/.svn/prop-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/sv.lproj/.svn/text-base/ShortcutRecorder.strings.svn-base</filename>
    </added>
    <added>
      <filename>shortcutrecorder-read-only/sv.lproj/ShortcutRecorder.strings</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff></diff>
      <filename>English.lproj/InfoPlist.strings</filename>
    </modified>
    <modified>
      <diff>@@ -3,199 +3,146 @@
 	archiveVersion = 1;
 	classes = {
 	};
-	objectVersion = 44;
+	objectVersion = 45;
 	objects = {
 
 /* Begin PBXBuildFile section */
-		882845960D09B5F500091F25 /* Plugin.xml in Resources */ = {isa = PBXBuildFile; fileRef = 882845950D09B5F500091F25 /* Plugin.xml */; };
-		889A4A560CFDBAE00041848B /* Plugin.xml in Resources */ = {isa = PBXBuildFile; fileRef = 889A4A550CFDBAE00041848B /* Plugin.xml */; };
-		889A4A5A0CFDBB440041848B /* QCUserInterface.plugin in Copy Plugins */ = {isa = PBXBuildFile; fileRef = 889A4A3F0CFDBA150041848B /* QCUserInterface.plugin */; };
-		889A4A740CFDBC850041848B /* QCUIElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 889A49B60CFDB3910041848B /* QCUIElement.m */; };
-		889A4A770CFDBCA50041848B /* QCUserInterfaceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 889A4A760CFDBCA50041848B /* QCUserInterfaceController.m */; };
-		889A4BEB0CFDC6090041848B /* NSAppleEventDescriptor-Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 889A4BEA0CFDC6090041848B /* NSAppleEventDescriptor-Extensions.m */; };
-		889A4BF50CFDC6360041848B /* ODBEditor.m in Sources */ = {isa = PBXBuildFile; fileRef = 889A4BF40CFDC6360041848B /* ODBEditor.m */; };
-		889A4C840CFDD90D0041848B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
-		88BE40D60E71439000E113B7 /* Blocks.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88BE409B0E7142E000E113B7 /* Blocks.framework */; };
-		88BE40E00E71439D00E113B7 /* Blocks.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88BE409B0E7142E000E113B7 /* Blocks.framework */; };
-		88BE41010E7143E900E113B7 /* Blocks.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 88BE409B0E7142E000E113B7 /* Blocks.framework */; };
-		88BE41060E71440500E113B7 /* BLifecycle.plugin in Copy Plugins */ = {isa = PBXBuildFile; fileRef = 88BE40A50E7142EE00E113B7 /* BLifecycle.plugin */; };
-		88BE410B0E71440A00E113B7 /* BSoftwareUpdate.plugin in Copy Plugins */ = {isa = PBXBuildFile; fileRef = 88BE40AE0E7142FA00E113B7 /* BSoftwareUpdate.plugin */; };
-		88BE410E0E71441000E113B7 /* BCrashReporter.plugin in Copy Plugins */ = {isa = PBXBuildFile; fileRef = 88BE40B70E71430400E113B7 /* BCrashReporter.plugin */; };
-		8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
+		1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
+		256AC3DA0F4B6AC300CF3369 /* QCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* QCAppDelegate.m */; };
+		88AAF90C105014A500DFD8E5 /* StatusItemIcon.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 88AAF90B105014A500DFD8E5 /* StatusItemIcon.pdf */; };
+		88AAFA4D10503BEC00DFD8E5 /* BBAppSessionLoginState.m in Sources */ = {isa = PBXBuildFile; fileRef = 88AAFA4C10503BEC00DFD8E5 /* BBAppSessionLoginState.m */; };
+		88B27D9E104D8EDF00806BAE /* NSAppleEventDescriptor-Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B27D95104D8EDE00806BAE /* NSAppleEventDescriptor-Extensions.m */; };
+		88B27D9F104D8EDF00806BAE /* ODBEditor.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B27D97104D8EDE00806BAE /* ODBEditor.m */; };
+		88B27DA1104D8EDF00806BAE /* QCUIElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B27D9B104D8EDF00806BAE /* QCUIElement.m */; };
+		88B27E47104D95A000806BAE /* QuickCursor.icns in Resources */ = {isa = PBXBuildFile; fileRef = 88B27E46104D95A000806BAE /* QuickCursor.icns */; };
+		88B2801E104DA2BD00806BAE /* ShortcutRecorder.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 88B28019104DA2B200806BAE /* ShortcutRecorder.framework */; };
+		88B28060104DA44900806BAE /* PTHotKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B28059104DA44900806BAE /* PTHotKey.m */; };
+		88B28061104DA44900806BAE /* PTHotKeyCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B2805B104DA44900806BAE /* PTHotKeyCenter.m */; };
+		88B28062104DA44900806BAE /* PTKeyCodeTranslator.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B2805D104DA44900806BAE /* PTKeyCodeTranslator.m */; };
+		88B28063104DA44900806BAE /* PTKeyCombo.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B2805F104DA44900806BAE /* PTKeyCombo.m */; };
+		88B28067104DA48500806BAE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88B28066104DA48500806BAE /* Carbon.framework */; };
+		88B2806C104DA49000806BAE /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88B2806B104DA49000806BAE /* CoreServices.framework */; };
+		88B281D3104DC8AB00806BAE /* ShortcutRecorder.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 88B28019104DA2B200806BAE /* ShortcutRecorder.framework */; };
 		8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
 		8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
 		8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
-		889A4A570CFDBB330041848B /* PBXContainerItemProxy */ = {
+		88B28018104DA2B200806BAE /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
-			containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = 889A4A3E0CFDBA150041848B;
-			remoteInfo = QCController;
-		};
-		88BE409A0E7142E000E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87480CFC97730023E2B8 /* Blocks.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 8DC2EF5B0486A6940098B216;
-			remoteInfo = Blocks;
-		};
-		88BE40A40E7142EE00E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87970CFC989F0023E2B8 /* BLifecycle.xcodeproj */;
+			containerPortal = 88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */;
 			proxyType = 2;
-			remoteGlobalIDString = 8D5B49B6048680CD000E48DA;
-			remoteInfo = BLifecycle;
+			remoteGlobalIDString = 939837800DA42965007F53F3;
+			remoteInfo = ShortcutRecorder.framework;
 		};
-		88BE40AD0E7142FA00E113B7 /* PBXContainerItemProxy */ = {
+		88B2801A104DA2B200806BAE /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
-			containerPortal = 886B87AA0CFC9A1D0023E2B8 /* BSoftwareUpdate.xcodeproj */;
+			containerPortal = 88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */;
 			proxyType = 2;
-			remoteGlobalIDString = 8D5B49B6048680CD000E48DA;
-			remoteInfo = BSoftwareUpdate;
-		};
-		88BE40B60E71430400E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87CD0CFC9A470023E2B8 /* BCrashReporter.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 8D5B49B6048680CD000E48DA;
-			remoteInfo = BCrashReporter;
-		};
-		88BE40E90E7143AF00E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87CD0CFC9A470023E2B8 /* BCrashReporter.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = 8D5B49AC048680CD000E48DA;
-			remoteInfo = BCrashReporter;
-		};
-		88BE40EB0E7143AF00E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87AA0CFC9A1D0023E2B8 /* BSoftwareUpdate.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = 8D5B49AC048680CD000E48DA;
-			remoteInfo = BSoftwareUpdate;
-		};
-		88BE40ED0E7143AF00E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87970CFC989F0023E2B8 /* BLifecycle.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = 8D5B49AC048680CD000E48DA;
-			remoteInfo = BLifecycle;
-		};
-		88BE40EF0E7143AF00E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87480CFC97730023E2B8 /* Blocks.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
-			remoteInfo = Blocks;
+			remoteGlobalIDString = 939838A50DA4300F007F53F3;
+			remoteInfo = ShortcutRecorder.ibplugin;
 		};
-		88BE41670E7144BA00E113B7 /* PBXContainerItemProxy */ = {
+		88B2801C104DA2B200806BAE /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
-			containerPortal = 88BE415F0E7144BA00E113B7 /* SystemVersionCheck.xcodeproj */;
+			containerPortal = 88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */;
 			proxyType = 2;
-			remoteGlobalIDString = 8DD76FA10486AA7600D96B5E;
-			remoteInfo = SystemVersionCheck;
+			remoteGlobalIDString = 93983B220DA43C4E007F53F3;
+			remoteInfo = ShortcutRecorderFramework_Tester;
 		};
-		88BE416B0E7144CE00E113B7 /* PBXContainerItemProxy */ = {
+		88B28033104DA32600806BAE /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
-			containerPortal = 88BE415F0E7144BA00E113B7 /* SystemVersionCheck.xcodeproj */;
+			containerPortal = 88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */;
 			proxyType = 1;
-			remoteGlobalIDString = 8DD76F960486AA7600D96B5E;
-			remoteInfo = SystemVersionCheck;
-		};
-		88BE41BB0E71491300E113B7 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 886B87480CFC97730023E2B8 /* Blocks.xcodeproj */;
-			proxyType = 1;
-			remoteGlobalIDString = 8DC2EF4F0486A6940098B216;
-			remoteInfo = Blocks;
+			remoteGlobalIDString = 9398377F0DA42965007F53F3;
+			remoteInfo = ShortcutRecorder.framework;
 		};
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXCopyFilesBuildPhase section */
-		886B875C0CFC97D80023E2B8 /* Copy Frameworks */ = {
+		88B28028104DA2FC00806BAE /* Copy Frameworks */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
 			dstPath = &quot;&quot;;
 			dstSubfolderSpec = 10;
 			files = (
-				88BE41010E7143E900E113B7 /* Blocks.framework in Copy Frameworks */,
+				88B2801E104DA2BD00806BAE /* ShortcutRecorder.framework in Copy Frameworks */,
 			);
 			name = &quot;Copy Frameworks&quot;;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		886B875D0CFC97D80023E2B8 /* Copy Plugins */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = &quot;&quot;;
-			dstSubfolderSpec = 13;
-			files = (
-				88BE41060E71440500E113B7 /* BLifecycle.plugin in Copy Plugins */,
-				88BE410B0E71440A00E113B7 /* BSoftwareUpdate.plugin in Copy Plugins */,
-				88BE410E0E71441000E113B7 /* BCrashReporter.plugin in Copy Plugins */,
-				889A4A5A0CFDBB440041848B /* QCUserInterface.plugin in Copy Plugins */,
-			);
-			name = &quot;Copy Plugins&quot;;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
-		089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
+		089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
 		1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
 		13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
+		1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
+		256AC3D80F4B6AC300CF3369 /* QCAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QCAppDelegate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		256AC3D90F4B6AC300CF3369 /* QCAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QCAppDelegate.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		256AC3F00F4B6AF500CF3369 /* QuickCursor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickCursor_Prefix.pch; sourceTree = &quot;&lt;group&gt;&quot;; };
 		29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = &quot;&lt;group&gt;&quot;; };
 		29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
 		29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
-		32CA4F630368D1EE00C91783 /* QuickCursor_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickCursor_Prefix.pch; sourceTree = &quot;&lt;group&gt;&quot;; };
-		882845950D09B5F500091F25 /* Plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Plugin.xml; sourceTree = &quot;&lt;group&gt;&quot;; };
-		886B87480CFC97730023E2B8 /* Blocks.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = Blocks.xcodeproj; path = Vendor/Blocks/Blocks.xcodeproj; sourceTree = &quot;&lt;group&gt;&quot;; };
-		886B87970CFC989F0023E2B8 /* BLifecycle.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = BLifecycle.xcodeproj; path = Vendor/BLifecycle/BLifecycle.xcodeproj; sourceTree = &quot;&lt;group&gt;&quot;; };
-		886B87AA0CFC9A1D0023E2B8 /* BSoftwareUpdate.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = BSoftwareUpdate.xcodeproj; path = Vendor/BSoftwareUpdate/BSoftwareUpdate.xcodeproj; sourceTree = &quot;&lt;group&gt;&quot;; };
-		886B87CD0CFC9A470023E2B8 /* BCrashReporter.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = BCrashReporter.xcodeproj; path = Vendor/BCrashReporter/BCrashReporter.xcodeproj; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A49B50CFDB3910041848B /* QCUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QCUIElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A49B60CFDB3910041848B /* QCUIElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QCUIElement.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4A3F0CFDBA150041848B /* QCUserInterface.plugin */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = QCUserInterface.plugin; sourceTree = BUILT_PRODUCTS_DIR; };
-		889A4A400CFDBA150041848B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4A550CFDBAE00041848B /* Plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Plugin.xml; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4A750CFDBCA50041848B /* QCUserInterfaceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QCUserInterfaceController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4A760CFDBCA50041848B /* QCUserInterfaceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QCUserInterfaceController.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4BD30CFDC5B70041848B /* ODBEditorSuite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODBEditorSuite.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4BE90CFDC6090041848B /* NSAppleEventDescriptor-Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;NSAppleEventDescriptor-Extensions.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4BEA0CFDC6090041848B /* NSAppleEventDescriptor-Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSAppleEventDescriptor-Extensions.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4BF30CFDC6360041848B /* ODBEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODBEditor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-		889A4BF40CFDC6360041848B /* ODBEditor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ODBEditor.m; sourceTree = &quot;&lt;group&gt;&quot;; };
-		88BE415F0E7144BA00E113B7 /* SystemVersionCheck.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = SystemVersionCheck.xcodeproj; path = Vendor/SystemVersionCheck/SystemVersionCheck.xcodeproj; sourceTree = &quot;&lt;group&gt;&quot;; };
-		88BE41C00E71499900E113B7 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = &quot;&lt;group&gt;&quot;; wrapsLines = 1; };
-		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88AAF90B105014A500DFD8E5 /* StatusItemIcon.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = StatusItemIcon.pdf; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88AAFA4B10503BEC00DFD8E5 /* BBAppSessionLoginState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BBAppSessionLoginState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88AAFA4C10503BEC00DFD8E5 /* BBAppSessionLoginState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BBAppSessionLoginState.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D94104D8EDE00806BAE /* NSAppleEventDescriptor-Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = &quot;NSAppleEventDescriptor-Extensions.h&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D95104D8EDE00806BAE /* NSAppleEventDescriptor-Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = &quot;NSAppleEventDescriptor-Extensions.m&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D96104D8EDE00806BAE /* ODBEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODBEditor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D97104D8EDE00806BAE /* ODBEditor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ODBEditor.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D98104D8EDE00806BAE /* ODBEditorSuite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ODBEditorSuite.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D9A104D8EDF00806BAE /* QCUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QCUIElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27D9B104D8EDF00806BAE /* QCUIElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QCUIElement.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B27E46104D95A000806BAE /* QuickCursor.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = QuickCursor.icns; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = &quot;wrapper.pb-project&quot;; name = ShortcutRecorder.xcodeproj; path = &quot;shortcutrecorder-read-only/ShortcutRecorder.xcodeproj&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B28058104DA44900806BAE /* PTHotKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTHotKey.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B28059104DA44900806BAE /* PTHotKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTHotKey.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2805A104DA44900806BAE /* PTHotKeyCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTHotKeyCenter.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2805B104DA44900806BAE /* PTHotKeyCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTHotKeyCenter.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2805C104DA44900806BAE /* PTKeyCodeTranslator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTKeyCodeTranslator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2805D104DA44900806BAE /* PTKeyCodeTranslator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTKeyCodeTranslator.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2805E104DA44900806BAE /* PTKeyCombo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTKeyCombo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B2805F104DA44900806BAE /* PTKeyCombo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PTKeyCombo.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		88B28066104DA48500806BAE /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
+		88B2806B104DA49000806BAE /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
+		8D1107310486CEB800E47090 /* QuickCursor-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = &quot;QuickCursor-Info.plist&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		8D1107320486CEB800E47090 /* QuickCursor.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuickCursor.app; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
-		889A4A3D0CFDBA150041848B /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				889A4C840CFDD90D0041848B /* Cocoa.framework in Frameworks */,
-				88BE40E00E71439D00E113B7 /* Blocks.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8D11072E0486CEB800E47090 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				88B281D3104DC8AB00806BAE /* ShortcutRecorder.framework in Frameworks */,
 				8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
-				88BE40D60E71439000E113B7 /* Blocks.framework in Frameworks */,
+				88B28067104DA48500806BAE /* Carbon.framework in Frameworks */,
+				88B2806C104DA49000806BAE /* CoreServices.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		080E96DDFE201D6D7F000001 /* Classes */ = {
+			isa = PBXGroup;
+			children = (
+				256AC3D80F4B6AC300CF3369 /* QCAppDelegate.h */,
+				256AC3D90F4B6AC300CF3369 /* QCAppDelegate.m */,
+				88B27D96104D8EDE00806BAE /* ODBEditor.h */,
+				88B27D97104D8EDE00806BAE /* ODBEditor.m */,
+				88B27D98104D8EDE00806BAE /* ODBEditorSuite.h */,
+				88B27D9A104D8EDF00806BAE /* QCUIElement.h */,
+				88B27D9B104D8EDF00806BAE /* QCUIElement.m */,
+				88AAFA4A10503BDC00DFD8E5 /* BBAppSessionLoginState */,
+				88B28057104DA43C00806BAE /* HotKey */,
+				88B27D94104D8EDE00806BAE /* NSAppleEventDescriptor-Extensions.h */,
+				88B27D95104D8EDE00806BAE /* NSAppleEventDescriptor-Extensions.m */,
+			);
+			name = Classes;
+			sourceTree = &quot;&lt;group&gt;&quot;;
+		};
 		1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
@@ -218,7 +165,6 @@
 			isa = PBXGroup;
 			children = (
 				8D1107320486CEB800E47090 /* QuickCursor.app */,
-				889A4A3F0CFDBA150041848B /* QCUserInterface.plugin */,
 			);
 			name = Products;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -226,17 +172,14 @@
 		29B97314FDCFA39411CA2CEA /* QuickCursor */ = {
 			isa = PBXGroup;
 			children = (
-				88BE415F0E7144BA00E113B7 /* SystemVersionCheck.xcodeproj */,
-				886B87480CFC97730023E2B8 /* Blocks.xcodeproj */,
-				886B87970CFC989F0023E2B8 /* BLifecycle.xcodeproj */,
-				886B87AA0CFC9A1D0023E2B8 /* BSoftwareUpdate.xcodeproj */,
-				886B87CD0CFC9A470023E2B8 /* BCrashReporter.xcodeproj */,
-				88BE41C00E71499900E113B7 /* README.txt */,
+				88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */,
+				080E96DDFE201D6D7F000001 /* Classes */,
 				29B97315FDCFA39411CA2CEA /* Other Sources */,
 				29B97317FDCFA39411CA2CEA /* Resources */,
-				889A4A3A0CFDB9CF0041848B /* Plugins */,
 				29B97323FDCFA39411CA2CEA /* Frameworks */,
 				19C28FACFE9D520D11CA2CBB /* Products */,
+				88B28066104DA48500806BAE /* Carbon.framework */,
+				88B2806B104DA49000806BAE /* CoreServices.framework */,
 			);
 			name = QuickCursor;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -244,7 +187,7 @@
 		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
 			isa = PBXGroup;
 			children = (
-				32CA4F630368D1EE00C91783 /* QuickCursor_Prefix.pch */,
+				256AC3F00F4B6AF500CF3369 /* QuickCursor_Prefix.pch */,
 				29B97316FDCFA39411CA2CEA /* main.m */,
 			);
 			name = &quot;Other Sources&quot;;
@@ -253,10 +196,11 @@
 		29B97317FDCFA39411CA2CEA /* Resources */ = {
 			isa = PBXGroup;
 			children = (
-				8D1107310486CEB800E47090 /* Info.plist */,
+				88AAF90B105014A500DFD8E5 /* StatusItemIcon.pdf */,
+				88B27E46104D95A000806BAE /* QuickCursor.icns */,
+				8D1107310486CEB800E47090 /* QuickCursor-Info.plist */,
 				089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
-				29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
-				882845950D09B5F500091F25 /* Plugin.xml */,
+				1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
 			);
 			name = Resources;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -270,130 +214,56 @@
 			name = Frameworks;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
-		889A4A3A0CFDB9CF0041848B /* Plugins */ = {
-			isa = PBXGroup;
-			children = (
-				889A4A460CFDBA5B0041848B /* QCUserInterface */,
-			);
-			path = Plugins;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
-		889A4A460CFDBA5B0041848B /* QCUserInterface */ = {
-			isa = PBXGroup;
-			children = (
-				889A49B50CFDB3910041848B /* QCUIElement.h */,
-				889A49B60CFDB3910041848B /* QCUIElement.m */,
-				889A4A750CFDBCA50041848B /* QCUserInterfaceController.h */,
-				889A4A760CFDBCA50041848B /* QCUserInterfaceController.m */,
-				889A4BFA0CFDC65A0041848B /* ODBEditor */,
-				889A4A5B0CFDBB5E0041848B /* Resources */,
-			);
-			path = QCUserInterface;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
-		889A4A5B0CFDBB5E0041848B /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				889A4A400CFDBA150041848B /* Info.plist */,
-				889A4A550CFDBAE00041848B /* Plugin.xml */,
-			);
-			name = Resources;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
-		889A4BFA0CFDC65A0041848B /* ODBEditor */ = {
-			isa = PBXGroup;
-			children = (
-				889A4BD30CFDC5B70041848B /* ODBEditorSuite.h */,
-				889A4BF30CFDC6360041848B /* ODBEditor.h */,
-				889A4BF40CFDC6360041848B /* ODBEditor.m */,
-				889A4BE90CFDC6090041848B /* NSAppleEventDescriptor-Extensions.h */,
-				889A4BEA0CFDC6090041848B /* NSAppleEventDescriptor-Extensions.m */,
-			);
-			name = ODBEditor;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
-		88BE40970E7142E000E113B7 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				88BE409B0E7142E000E113B7 /* Blocks.framework */,
-			);
-			name = Products;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
-		88BE40A10E7142EE00E113B7 /* Products */ = {
+		88AAFA4A10503BDC00DFD8E5 /* BBAppSessionLoginState */ = {
 			isa = PBXGroup;
 			children = (
-				88BE40A50E7142EE00E113B7 /* BLifecycle.plugin */,
+				88AAFA4B10503BEC00DFD8E5 /* BBAppSessionLoginState.h */,
+				88AAFA4C10503BEC00DFD8E5 /* BBAppSessionLoginState.m */,
 			);
-			name = Products;
+			name = BBAppSessionLoginState;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
-		88BE40AA0E7142FA00E113B7 /* Products */ = {
+		88B2800F104DA2B200806BAE /* Products */ = {
 			isa = PBXGroup;
 			children = (
-				88BE40AE0E7142FA00E113B7 /* BSoftwareUpdate.plugin */,
+				88B28019104DA2B200806BAE /* ShortcutRecorder.framework */,
+				88B2801B104DA2B200806BAE /* ShortcutRecorder.ibplugin */,
+				88B2801D104DA2B200806BAE /* ShortcutRecorder.app */,
 			);
 			name = Products;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
-		88BE40B30E71430400E113B7 /* Products */ = {
+		88B28057104DA43C00806BAE /* HotKey */ = {
 			isa = PBXGroup;
 			children = (
-				88BE40B70E71430400E113B7 /* BCrashReporter.plugin */,
-			);
-			name = Products;
-			sourceTree = &quot;&lt;group&gt;&quot;;
-		};
-		88BE41600E7144BA00E113B7 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				88BE41680E7144BA00E113B7 /* SystemVersionCheck */,
-			);
-			name = Products;
+				88B28058104DA44900806BAE /* PTHotKey.h */,
+				88B28059104DA44900806BAE /* PTHotKey.m */,
+				88B2805A104DA44900806BAE /* PTHotKeyCenter.h */,
+				88B2805B104DA44900806BAE /* PTHotKeyCenter.m */,
+				88B2805C104DA44900806BAE /* PTKeyCodeTranslator.h */,
+				88B2805D104DA44900806BAE /* PTKeyCodeTranslator.m */,
+				88B2805E104DA44900806BAE /* PTKeyCombo.h */,
+				88B2805F104DA44900806BAE /* PTKeyCombo.m */,
+			);
+			name = HotKey;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
-		889A4A3E0CFDBA150041848B /* QCUserInterface */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 889A4A430CFDBA160041848B /* Build configuration list for PBXNativeTarget &quot;QCUserInterface&quot; */;
-			buildPhases = (
-				889A4A3B0CFDBA150041848B /* Resources */,
-				889A4A3C0CFDBA150041848B /* Sources */,
-				889A4A3D0CFDBA150041848B /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-				88BE41BC0E71491300E113B7 /* PBXTargetDependency */,
-			);
-			name = QCUserInterface;
-			productName = QCController;
-			productReference = 889A4A3F0CFDBA150041848B /* QCUserInterface.plugin */;
-			productType = &quot;com.apple.product-type.bundle&quot;;
-		};
 		8D1107260486CEB800E47090 /* QuickCursor */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget &quot;QuickCursor&quot; */;
 			buildPhases = (
-				886B87920CFC982A0023E2B8 /* Run genstrings Script */,
 				8D1107290486CEB800E47090 /* Resources */,
 				8D11072C0486CEB800E47090 /* Sources */,
 				8D11072E0486CEB800E47090 /* Frameworks */,
-				886B875C0CFC97D80023E2B8 /* Copy Frameworks */,
-				886B875D0CFC97D80023E2B8 /* Copy Plugins */,
-				886B87940CFC985F0023E2B8 /* Prepare Release Script */,
+				88B28028104DA2FC00806BAE /* Copy Frameworks */,
 			);
 			buildRules = (
 			);
 			dependencies = (
-				88BE416C0E7144CE00E113B7 /* PBXTargetDependency */,
-				88BE40F00E7143AF00E113B7 /* PBXTargetDependency */,
-				88BE40EE0E7143AF00E113B7 /* PBXTargetDependency */,
-				88BE40EC0E7143AF00E113B7 /* PBXTargetDependency */,
-				88BE40EA0E7143AF00E113B7 /* PBXTargetDependency */,
-				889A4A580CFDBB330041848B /* PBXTargetDependency */,
+				88B28034104DA32600806BAE /* PBXTargetDependency */,
 			);
 			name = QuickCursor;
 			productInstallPath = &quot;$(HOME)/Applications&quot;;
@@ -407,187 +277,86 @@
 		29B97313FDCFA39411CA2CEA /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject &quot;QuickCursor&quot; */;
-			compatibilityVersion = &quot;Xcode 3.0&quot;;
+			compatibilityVersion = &quot;Xcode 3.1&quot;;
 			hasScannedForEncodings = 1;
 			mainGroup = 29B97314FDCFA39411CA2CEA /* QuickCursor */;
 			projectDirPath = &quot;&quot;;
 			projectReferences = (
 				{
-					ProductGroup = 88BE40B30E71430400E113B7 /* Products */;
-					ProjectRef = 886B87CD0CFC9A470023E2B8 /* BCrashReporter.xcodeproj */;
-				},
-				{
-					ProductGroup = 88BE40A10E7142EE00E113B7 /* Products */;
-					ProjectRef = 886B87970CFC989F0023E2B8 /* BLifecycle.xcodeproj */;
-				},
-				{
-					ProductGroup = 88BE40970E7142E000E113B7 /* Products */;
-					ProjectRef = 886B87480CFC97730023E2B8 /* Blocks.xcodeproj */;
-				},
-				{
-					ProductGroup = 88BE40AA0E7142FA00E113B7 /* Products */;
-					ProjectRef = 886B87AA0CFC9A1D0023E2B8 /* BSoftwareUpdate.xcodeproj */;
-				},
-				{
-					ProductGroup = 88BE41600E7144BA00E113B7 /* Products */;
-					ProjectRef = 88BE415F0E7144BA00E113B7 /* SystemVersionCheck.xcodeproj */;
+					ProductGroup = 88B2800F104DA2B200806BAE /* Products */;
+					ProjectRef = 88B2800E104DA2B200806BAE /* ShortcutRecorder.xcodeproj */;
 				},
 			);
 			projectRoot = &quot;&quot;;
 			targets = (
 				8D1107260486CEB800E47090 /* QuickCursor */,
-				889A4A3E0CFDBA150041848B /* QCUserInterface */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXReferenceProxy section */
-		88BE409B0E7142E000E113B7 /* Blocks.framework */ = {
+		88B28019104DA2B200806BAE /* ShortcutRecorder.framework */ = {
 			isa = PBXReferenceProxy;
 			fileType = wrapper.framework;
-			path = Blocks.framework;
-			remoteRef = 88BE409A0E7142E000E113B7 /* PBXContainerItemProxy */;
+			path = ShortcutRecorder.framework;
+			remoteRef = 88B28018104DA2B200806BAE /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
-		88BE40A50E7142EE00E113B7 /* BLifecycle.plugin */ = {
+		88B2801B104DA2B200806BAE /* ShortcutRecorder.ibplugin */ = {
 			isa = PBXReferenceProxy;
 			fileType = wrapper.cfbundle;
-			path = BLifecycle.plugin;
-			remoteRef = 88BE40A40E7142EE00E113B7 /* PBXContainerItemProxy */;
+			path = ShortcutRecorder.ibplugin;
+			remoteRef = 88B2801A104DA2B200806BAE /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
-		88BE40AE0E7142FA00E113B7 /* BSoftwareUpdate.plugin */ = {
+		88B2801D104DA2B200806BAE /* ShortcutRecorder.app */ = {
 			isa = PBXReferenceProxy;
-			fileType = wrapper.cfbundle;
-			path = BSoftwareUpdate.plugin;
-			remoteRef = 88BE40AD0E7142FA00E113B7 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		88BE40B70E71430400E113B7 /* BCrashReporter.plugin */ = {
-			isa = PBXReferenceProxy;
-			fileType = wrapper.cfbundle;
-			path = BCrashReporter.plugin;
-			remoteRef = 88BE40B60E71430400E113B7 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		88BE41680E7144BA00E113B7 /* SystemVersionCheck */ = {
-			isa = PBXReferenceProxy;
-			fileType = &quot;compiled.mach-o.executable&quot;;
-			path = SystemVersionCheck;
-			remoteRef = 88BE41670E7144BA00E113B7 /* PBXContainerItemProxy */;
+			fileType = wrapper.application;
+			path = ShortcutRecorder.app;
+			remoteRef = 88B2801C104DA2B200806BAE /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
 /* End PBXReferenceProxy section */
 
 /* Begin PBXResourcesBuildPhase section */
-		889A4A3B0CFDBA150041848B /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				889A4A560CFDBAE00041848B /* Plugin.xml in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8D1107290486CEB800E47090 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */,
 				8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
-				882845960D09B5F500091F25 /* Plugin.xml in Resources */,
+				1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
+				88B27E47104D95A000806BAE /* QuickCursor.icns in Resources */,
+				88AAF90C105014A500DFD8E5 /* StatusItemIcon.pdf in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXResourcesBuildPhase section */
 
-/* Begin PBXShellScriptBuildPhase section */
-		886B87920CFC982A0023E2B8 /* Run genstrings Script */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = &quot;Run genstrings Script&quot;;
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = &quot;if [ $CONFIGURATION != 'Release' ]; then\n\texit\nfi\n\ngenstrings -s BLocalizedString -o English.lproj/ Sources/*.[mch] Sources/*/*.[mch]&quot;;
-		};
-		886B87940CFC985F0023E2B8 /* Prepare Release Script */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = &quot;Prepare Release Script&quot;;
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = &quot;if [ $CONFIGURATION != 'Release' ]; then\n\texit\nfi\n\n### Version Constants\n\nVERSION=$(defaults read \&quot;$BUILT_PRODUCTS_DIR/$PROJECT_NAME.app/Contents/Info\&quot; CFBundleVersion)\nSHORT_VERSION_STRING=$(defaults read \&quot;$BUILT_PRODUCTS_DIR/$PROJECT_NAME.app/Contents/Info\&quot; CFBundleShortVersionString)\n\n### System Version Check\n\ncp \&quot;$BUILT_PRODUCTS_DIR/SystemVersionCheck\&quot; \&quot;$BUILT_PRODUCTS_DIR/$EXECUTABLE_FOLDER_PATH/$EXECUTABLE_NAME-SystemVersionCheck\&quot;\n\n### Build DMG\n\nDMG_DIR=\&quot;$TEMP_FILES_DIR/disk\&quot;\nDMG_PATH=\&quot;$BUILT_PRODUCTS_DIR/$PROJECT_NAME-$SHORT_VERSION_STRING.dmg\&quot;\n\nrm -rf \&quot;$DMG_DIR\&quot;\nmkdir \&quot;$DMG_DIR\&quot;\ncp -R \&quot;$BUILT_PRODUCTS_DIR/$PROJECT_NAME.app\&quot; \&quot;$DMG_DIR\&quot;\nrm -f \&quot;$DMG_PATH\&quot;\nhdiutil create -srcfolder \&quot;$DMG_DIR\&quot; -volname \&quot;$PROJECT_NAME-$SHORT_VERSION_STRING\&quot; \&quot;$DMG_PATH\&quot;\nhdiutil internet-enable -yes \&quot;$DMG_PATH\&quot;\nrm -rf \&quot;$DMG_DIR\&quot;&quot;;
-		};
-/* End PBXShellScriptBuildPhase section */
-
 /* Begin PBXSourcesBuildPhase section */
-		889A4A3C0CFDBA150041848B /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				889A4A740CFDBC850041848B /* QCUIElement.m in Sources */,
-				889A4A770CFDBCA50041848B /* QCUserInterfaceController.m in Sources */,
-				889A4BEB0CFDC6090041848B /* NSAppleEventDescriptor-Extensions.m in Sources */,
-				889A4BF50CFDC6360041848B /* ODBEditor.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		8D11072C0486CEB800E47090 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				8D11072D0486CEB800E47090 /* main.m in Sources */,
+				256AC3DA0F4B6AC300CF3369 /* QCAppDelegate.m in Sources */,
+				88B27D9E104D8EDF00806BAE /* NSAppleEventDescriptor-Extensions.m in Sources */,
+				88B27D9F104D8EDF00806BAE /* ODBEditor.m in Sources */,
+				88B27DA1104D8EDF00806BAE /* QCUIElement.m in Sources */,
+				88B28060104DA44900806BAE /* PTHotKey.m in Sources */,
+				88B28061104DA44900806BAE /* PTHotKeyCenter.m in Sources */,
+				88B28062104DA44900806BAE /* PTKeyCodeTranslator.m in Sources */,
+				88B28063104DA44900806BAE /* PTKeyCombo.m in Sources */,
+				88AAFA4D10503BEC00DFD8E5 /* BBAppSessionLoginState.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
-		889A4A580CFDBB330041848B /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = 889A4A3E0CFDBA150041848B /* QCUserInterface */;
-			targetProxy = 889A4A570CFDBB330041848B /* PBXContainerItemProxy */;
-		};
-		88BE40EA0E7143AF00E113B7 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = BCrashReporter;
-			targetProxy = 88BE40E90E7143AF00E113B7 /* PBXContainerItemProxy */;
-		};
-		88BE40EC0E7143AF00E113B7 /* PBXTargetDependency */ = {
+		88B28034104DA32600806BAE /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			name = BSoftwareUpdate;
-			targetProxy = 88BE40EB0E7143AF00E113B7 /* PBXContainerItemProxy */;
-		};
-		88BE40EE0E7143AF00E113B7 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = BLifecycle;
-			targetProxy = 88BE40ED0E7143AF00E113B7 /* PBXContainerItemProxy */;
-		};
-		88BE40F00E7143AF00E113B7 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = Blocks;
-			targetProxy = 88BE40EF0E7143AF00E113B7 /* PBXContainerItemProxy */;
-		};
-		88BE416C0E7144CE00E113B7 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = SystemVersionCheck;
-			targetProxy = 88BE416B0E7144CE00E113B7 /* PBXContainerItemProxy */;
-		};
-		88BE41BC0E71491300E113B7 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			name = Blocks;
-			targetProxy = 88BE41BB0E71491300E113B7 /* PBXContainerItemProxy */;
+			name = ShortcutRecorder.framework;
+			targetProxy = 88B28033104DA32600806BAE /* PBXContainerItemProxy */;
 		};
 /* End PBXTargetDependency section */
 
@@ -600,73 +369,21 @@
 			name = InfoPlist.strings;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
-		29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = {
+		1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
 			isa = PBXVariantGroup;
 			children = (
-				29B97319FDCFA39411CA2CEA /* English */,
+				1DDD58150DA1D0A300B32029 /* English */,
 			);
-			name = MainMenu.nib;
+			name = MainMenu.xib;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
-		889A4A410CFDBA160041848B /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_MODEL_TUNING = G5;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = &quot;$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h&quot;;
-				INFOPLIST_FILE = Plugins/QCUserInterface/Info.plist;
-				INSTALL_PATH = &quot;$(HOME)/Library/Bundles&quot;;
-				OTHER_LDFLAGS = (
-					&quot;-framework&quot;,
-					Foundation,
-					&quot;-framework&quot;,
-					AppKit,
-					&quot;-undefined&quot;,
-					dynamic_lookup,
-				);
-				PREBINDING = NO;
-				PRODUCT_NAME = QCUserInterface;
-				WRAPPER_EXTENSION = plugin;
-				ZERO_LINK = YES;
-			};
-			name = Debug;
-		};
-		889A4A420CFDBA160041848B /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				GCC_MODEL_TUNING = G5;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = &quot;$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h&quot;;
-				INFOPLIST_FILE = Plugins/QCUserInterface/Info.plist;
-				INSTALL_PATH = &quot;$(HOME)/Library/Bundles&quot;;
-				OTHER_LDFLAGS = (
-					&quot;-framework&quot;,
-					Foundation,
-					&quot;-framework&quot;,
-					AppKit,
-					&quot;-undefined&quot;,
-					dynamic_lookup,
-				);
-				PREBINDING = NO;
-				PRODUCT_NAME = QCUserInterface;
-				WRAPPER_EXTENSION = plugin;
-				ZERO_LINK = NO;
-			};
-			name = Release;
-		};
 		C01FCF4B08A954540054247B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_ENABLE_FIX_AND_CONTINUE = YES;
@@ -674,66 +391,55 @@
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = QuickCursor_Prefix.pch;
-				INFOPLIST_FILE = Info.plist;
+				INFOPLIST_FILE = &quot;QuickCursor-Info.plist&quot;;
 				INSTALL_PATH = &quot;$(HOME)/Applications&quot;;
 				PRODUCT_NAME = QuickCursor;
-				WRAPPER_EXTENSION = app;
 			};
 			name = Debug;
 		};
 		C01FCF4C08A954540054247B /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
 				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
 				GCC_MODEL_TUNING = G5;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PREFIX_HEADER = QuickCursor_Prefix.pch;
-				INFOPLIST_FILE = Info.plist;
+				INFOPLIST_FILE = &quot;QuickCursor-Info.plist&quot;;
 				INSTALL_PATH = &quot;$(HOME)/Applications&quot;;
 				PRODUCT_NAME = QuickCursor;
-				SYSTEM_VERSION_CHECK_SUFFIX = &quot;-SystemVersionCheck&quot;;
-				WRAPPER_EXTENSION = app;
 			};
 			name = Release;
 		};
 		C01FCF4F08A954540054247B /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				GCC_ENABLE_OBJC_GC = required;
+				ARCHS = &quot;$(ARCHS_STANDARD_32_64_BIT)&quot;;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
+				ONLY_ACTIVE_ARCH = YES;
 				PREBINDING = NO;
-				SDKROOT = &quot;$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk&quot;;
+				SDKROOT = macosx10.6;
 			};
 			name = Debug;
 		};
 		C01FCF5008A954540054247B /* Release */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				ARCHS = (
-					ppc,
-					i386,
-				);
-				GCC_ENABLE_OBJC_GC = required;
+				ARCHS = &quot;$(ARCHS_STANDARD_32_64_BIT)&quot;;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_UNUSED_VARIABLE = YES;
 				PREBINDING = NO;
-				SDKROOT = &quot;$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk&quot;;
+				SDKROOT = macosx10.6;
 			};
 			name = Release;
 		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		889A4A430CFDBA160041848B /* Build configuration list for PBXNativeTarget &quot;QCUserInterface&quot; */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				889A4A410CFDBA160041848B /* Debug */,
-				889A4A420CFDBA160041848B /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 		C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget &quot;QuickCursor&quot; */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (</diff>
      <filename>QuickCursor.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -3,5 +3,6 @@
 //
 
 #ifdef __OBJC__
-    #import &lt;Cocoa/Cocoa.h&gt;
+#import &lt;Cocoa/Cocoa.h&gt;
+#import &lt;ApplicationServices/ApplicationServices.h&gt;
 #endif</diff>
      <filename>QuickCursor_Prefix.pch</filename>
    </modified>
    <modified>
      <diff>@@ -2,39 +2,14 @@ About:
 
 QuickCursor is menu item that allows you to edit text from any application in your favorite text editor*. Unlike custom &#8220;edit in&#8221; plugin solutions QuickCursor provides a standard open source solution that uses public API's and doesn&#8217;t require input manager hacks to work.
 
-QuickCursor works by reading a string value from the source application via the current AXUIElement. Next it sets up a ODBEditor session with the preffered editor. When the preffered editor modifies the string QuickCursor writes that value back into the source application via the AXUIElement.
+QuickCursor works by reading a string value from the source application via the current AXUIElement. Next it sets up a ODBEditor session with the preferred editor. When the preferred editor modifies the string QuickCursor writes that value back into the source application via the AXUIElement.
 
 Todo:
 
-- Figure out best way to setup keyboard shortcuts for items in the QuickCursor menu.
 - Doesn't work with Mail.app. Mail.app's text area is a AXWebArea. It seems that the default kAXValueAttribute doesn't work for reading and writing AXWebArea's text. Need to find out how to read write text from AXWebArea and handle as a special case.
-- String is written back into source application with [QCUIElement setValue:]. This generally works, but it seems to change the value behind the scenes... this can mess up undo stacks and such in the destination app. Needs to be some documenentation that describes how the source app can be made aware of these changes and how to custom handle them.
+- String is written back into source application with [QCUIElement setValue:]. This generally works, but it seems to change the value behind the scenes... this can mess up undo stacks and such in the destination app. Needs to be some documentation that describes how the source app can be made aware of these changes and how to custom handle them.
 - Doesn't seem to work with BBEdit editor.
 
-Building:
-
-First checkout from github:
-
-$ git clone git://github.com/jessegrosjean/quickcursor.git
-...
-
-Next init and update submodules:
-
-$ cd quickcursor/
-$ git submodule init
-...
-$ git submodule update
-...
-$ open QuickCursor.xcodeproj/ 
-
-To build QuickCursor:
-
-1. Open the QuickCursor XCode project ./QuickCursor/QuickCursor.xcode
-2. In xCode preferences (XCode &gt; Preferences...) go to the &quot;Building&quot; section and
-make sure that you have a single customized location where all build products are
-placed. See the &quot;Place Build Products in:&quot; label of that preference pane. I use &quot;/xcodebuilds&quot;
-3. You should now be able to build the QuickCursor target.
-
 Thanks,
 Jesse Grosjean
 jesse@hogbaysoftware.com</diff>
      <filename>README.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,14 @@
 //
 //  main.m
-//  &#171;PROJECTNAME&#187;
+//  QuickCursor
 //
-//  Created by &#171;FULLUSERNAME&#187; on &#171;DATE&#187;.
-//  Copyright &#171;ORGANIZATIONNAME&#187; &#171;YEAR&#187; . All rights reserved.
+//  Created by Jesse Grosjean on 9/1/09.
+//  Copyright 2009 Hog Bay Software. All rights reserved.
 //
 
 #import &lt;Cocoa/Cocoa.h&gt;
-#import &lt;Blocks/Blocks.h&gt;
 
-
-int main(int argc, char *argv[]) {
-	[[BExtensionRegistry sharedInstance] loadMainExtension];
+int main(int argc, char *argv[])
+{
     return NSApplicationMain(argc,  (const char **) argv);
-}
\ No newline at end of file
+}</diff>
      <filename>main.m</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>English.lproj/MainMenu.nib/designable.nib</filename>
    </removed>
    <removed>
      <filename>English.lproj/MainMenu.nib/keyedobjects.nib</filename>
    </removed>
    <removed>
      <filename>Info.plist</filename>
    </removed>
    <removed>
      <filename>Plugin.xml</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/Info.plist</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/NSAppleEventDescriptor-Extensions.h</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/NSAppleEventDescriptor-Extensions.m</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/ODBEditor.h</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/ODBEditor.m</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/ODBEditorSuite.h</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/Plugin.xml</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/QCUIElement.h</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/QCUIElement.m</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/QCUserInterfaceController.h</filename>
    </removed>
    <removed>
      <filename>Plugins/QCUserInterface/QCUserInterfaceController.m</filename>
    </removed>
    <removed>
      <filename>Vendor/BCrashReporter</filename>
    </removed>
    <removed>
      <filename>Vendor/BLifecycle</filename>
    </removed>
    <removed>
      <filename>Vendor/BSoftwareUpdate</filename>
    </removed>
    <removed>
      <filename>Vendor/Blocks</filename>
    </removed>
    <removed>
      <filename>Vendor/SystemVersionCheck</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>208a7560fc9f95a4c8c4b8441b744781cf349be4</id>
    </parent>
  </parents>
  <author>
    <name>Jesse Grosjean</name>
    <email>jesse@hogbaysoftware.com</email>
  </author>
  <url>http://github.com/jessegrosjean/quickcursor/commit/f1ecb587d6f8536c2ca01f8030de0be3105c67c2</url>
  <id>f1ecb587d6f8536c2ca01f8030de0be3105c67c2</id>
  <committed-date>2009-09-03T13:26:23-07:00</committed-date>
  <authored-date>2009-09-03T13:26:23-07:00</authored-date>
  <message>new version of quick cursor</message>
  <tree>265175ce33d9034153ff01637d255e544e438e6b</tree>
  <committer>
    <name>Jesse Grosjean</name>
    <email>jesse@hogbaysoftware.com</email>
  </committer>
</commit>
