Modify AppleIRController to enable/disable IR controller using AppleScript - applescript

I'm looking to enable and disable the IR using AppleScript. I'm following the example here. The code successfully updates the checkmark in System Preferences, but it doesn't actually enable (or disable) the IR receiver. Any suggestions?

Related

How do you assign a keyboard shortcut or hotkey in sketchbook pro?

I'm using Sketchbook pro for mac, the documentation that states: "Many of the tools found in the lagoon and menus have assigned hotkeys. You can also check out the Preferences window for a list of them or to remap a tool." However, the link they provide does not give information about how to remap commands.
So trying to switch gears and use hotkeys instead, now the documentation describes a method of assigned hotkeys; however, this doesn't work and nothing happens. Also mysteriously the documentation shows the lagoon with the ability for hotkeys however on my desktop this isn't what I see (see figure below)
Ultimately my goal is to assign commands to my tablet, literally I just want to assign the r key to the rectangle tool instead of the ruler as shown. The problem is that on my Wacom I can only use keystrokes and as it is there is no keystroke for the rectangle command, so frustrating.
It seems like it would be so simple to just "assign keyboard shortcuts in sketchbook pro" but I can't find a single example of it actually happening, I only find references to it being possible, like for example the end of this video see image below:
I don't mind trying to figure out how to use Applescript but I can't find any information on how to talk to sketchbook with applescript. Frustratingly there is an interface to run Applescripts...but no information about how to write applescript to interact with sketchbook commands, see figure:
I'm not sure about applescript, so I hope someone else can help.
You cannot set your own shortcuts inside of SketchBook.
You can only select from the list provided.
In your screen-cap the context of that video is setting your Wacom tablet buttons to Sketchbook hotkeys. That end slide is attempting to communicate that you can use our suggestions (which are listed in the video) or make your own configuration from the available hotkey list. It's not meant to say that you can create your own custom hotkeys.
What are you using the rectangle so much for? 🤔
Regarding AppleScript, I've checked via Autodesk Support and they replied they currently do not support it.
The fact that you see your script appearing in "Sketchbook Pro > Services" is a MacOS feature, it doesn't necessary mean Sketchbook knows about it.

OSX: Programmatically remap Caps Lock's functionality (as set via System Preferences)?

My question is referring to the System Preferences setting that enables you to remap Caps Lock to e.g. Ctrl key.
^ Is it possible to affect this setting programmatically?
Primarily I'd be interested achieving this via defaults or some shell trick; secondarily via AppleScript (yuck).
I know I can probably achieve this by using 3rd party tools, such as KeyRemap4MacBook, but that's a last resort. But I'd rather prefer a non-3rd party solution, if possible.
My use case:
Using Keyboard Maestro and its nice macro triggers, I'm looking to automatically remap Caps Lock -> Ctrl in apps like MacVim, and toggle it back to normal Caps Lock when leaving the affected apps.
You can toggle this using AppleScript. It'll be a simple automation technique, that will basically do the same toggle in System Preferences for you automatically.
You can add the created AppleScript toggle to the MacVim Scripts Toolbar icon. That way, while inside the app you can toggle it, and put it off while leaving.
Is this what you're looking for ? If you still need this I'll design the AppleScript for you and post it in here in a bit.

How do I programmatically determine if "Full Keyboard Access" mode is on in MacOS?

Full Keyboard Access mode is enabled or disabled in the Keyboard preference pane - it's referenced here:
Efficiently subclassing standard Cocoa controls
and here:
Disable Full Keyboard Access for App
but nowhere on the web have I found out how to determine, within my app, if Full Keyboard Access is enabled. I'm writing a custom radio control and want to allow tabbing into it iff Full Keyboard Access is on.
In Mac OS X 10.6 or higher: -[NSApp isFullKeyboardAccessEnabled].
As best I know this is undocumented. It is stored in AppleKeyboardUIMode in NSGlobalDomain:
defaults read -g AppleKeyboardUIMode
It's a bitfield, but I've never seen docs for it. "Full Keyboard Access" seems to toggle bit 1 (value=2).
The short is you should be able to fetch this from NSUserDefaults and bitmask it to find your answer, but it could change.

intercepting keystrokes in OSX

I'd like to be able to listen to keystrokes systemwide in OSX to implement an utility like AHK on windows (the shortcuts part of AHK anyway), recognizing not only simply combinations of keys, but even more complex things like sequences etc..
I need someone to point me... where to start? How to listen to keybard events system wide? Maybe there's something in the cocoa framework or that's not where to look for?
Quartz event taps. Look up CGEventTapCreate in the Xcode doc viewer to get started. Note that the user must check "Enable access for assistive devices" in the Universal Access preference panel before you'll be able to monitor keyboard events. (And even then you won't see keystrokes within password fields.)

How do I get keyboard events in an NSStatusWindowLevel window while my application is not frontmost?

After creating a translucent window (based on example code by Matt Gemmell) I want to get keyboard events in this window. It seems that there are only keyboard events when my application is the active application while I want keyboard events even when my application isn't active but the window is visible.
Basically I want behavior like that provided by the Quicksilver application (by blacktree).
Does anybody have any hints on how to do this?
There are two options:
Use GetEventMonitorTarget() with a tacked-on Carbon run loop to grab keyboard events. Sample code is available on this page at CocoaDev.
Register an event trap with CGEventTapCreate. Sample code can be found in this thread from the Apple developer mailing list.
Edit: Note that these methods only work if you check off “Enable access for assistive devices” in the Universal Access preference pane.
A simpler route that may work better for you is to make your app background-only. The discussion on CocoaDev of the LSUIElement plist key explains how to set it up. Basically, your application will not appear in the dock or the app switcher, and will not replace the current application's menu bar when activated. From a user perspective it's never the 'active' application, but any windows you open can get activated and respond to events normally. The only caveat is that you'll never get to show your menu bar, so you'll probably have to set up an NSStatusItem (one of those icon menus that show up on the right side of the menu bar) to control (i.e. quit, bring up prefs, etc.) your application.
Edit: I completely forgot about the Non-Activating Panel checkbox in Interface Builder. You need to use an NSPanel instead of an NSWindow to get this choice. This setting lets your panel accept clicks and keyboard input without activating your application. I'm betting that some mix of this setting and the Carbon Hot Keys API is what QuickSilver is using for their UI.
Update:
Apple actually seems to have changed everything again starting with 10.5 BTW (I recently upgraded and my sample code did not work as before).
Now you can indeed only capture keydown events setting up an event tap if you are either root or assistive devices are enabled, regardless on which level you plan to capture and regardless if you selected to capture (which allows you to modify and even discard events) or to be listen only. You can still get information when flags have changed (actually even change these) and other events, but keydown under no other circumstances.
However, using the carbon event handler and the method RegisterEventHotKey() allows you to register a hotkey and you'll get notified when it is pressed, you neither need to be root for that nor do you need anything like assistive devices enabled. I think Quicksilver is probably doing it that way.

Resources