Giter VIP home page Giter VIP logo

shortcutrecorder's Introduction

ShortcutRecorder 2

ShortcutRecorder Preview

The only user interface control to record shortcuts. For Mac OS X 10.6+, 64bit.

  • Fresh Look & Feel (brought to you by Wireload)
  • With Retina support
  • Auto Layout ready
  • Correct drawing on Layer-backed and Layer-hosted views
  • Accessibility for people with disabilities
  • Revised codebase with Automatic Reference Counting support
  • Translated into 24 languages

Includes framework to set global shortcuts (PTHotKey).

Take a look at the demo.

Get Sources

The preferred way to add the ShortcutRecorder to your project is to use git submodules:
git submodule add git://github.com/Kentzo/ShortcutRecorder.git You can download sources from the site as well.

Integrate into your project

First, add ShortcutRecorder.xcodeproj to your workspace via Xcode (Apple docs). Don't have a workspace? No problem, just add ShortcutRecorder.xcodeproj via the "Add Files to" dialog.

Next step is to ensure your target is linked against the ShortcutRecorder or/and PTHotKey frameworks (Apple docs). Desired frameworks will be listed under Workspace.

Now it's time to make frameworks part of your app. To do this, you need to add custom Build Phase (Apple docs). Remember to set Destination to Frameworks and clean up Subpath.

Finally, ensure your app will find frameworks upon start. Open Build Settings of your target, look up Runtime Search Paths. Add @executable_path/../Frameworks to the list of paths.

Add control in Interface Builder

Since Xcode 4 Apple removed support for custom control, unfortunately. However, you can still use it to add and position/resize ShortcutRecorder control. To do this, you need to add Custom View and set its class to SRRecorderControl.

SRRecorderControl has fixed height of 25 points so ensure you do not use autoresizing masks/layout rules which allows vertical resizing. I recommend you to pin height in case you're using Auto Layout.

Key Equivalents and Keyboard Layout

While ShortcutRecorder keeps your shortcuts as combination of key code and modifier masks, key equivalents are expressed using key character and modifier mask. The key difference here is that position key on keyboard does not depend on current keyboard layout, position of key character does.

ShortcutRecorder includes two special transformers: SRKeyEquivalentTransformer and SRKeyEquivalentModifierMaskTransformer. SRKeyEquivalentTransformer uses ASCII keyboard layout to convert key code into character, therefore resulting character does not depend on keyboard layout.
The drawback is that position of the character on keyboard may change depending on layout and used modifier keys (primarly Option and Shift).

NSButton

If you're going to bind ShortcutRecorder to key equivalent of NSButton, I encourage you to require NSCommandKeyMask. This is because NSButton handles key equivalents very strange. Rather than investigating full information of the keyboard event, it just asks for charactersIgnoringModifiers and compares returned value with its keyEquivalent. Unfortunately, Cocoa returns layout-independent (ASCII) representation of characters only when NSCommandKeyMask is set. If it's not set, assigned shortcut likely won't work with other layouts.

Questions

Still have questions about how to use it? Create an issue immediately and feel free to ping me.

shortcutrecorder's People

Contributors

kentzo avatar aljungberg avatar styxua avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.