aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-08-16Use an `NSApplication`Teddy Wing
Previously the `setListenInExclusiveMode:` call did appear to work, disabling the normal functioning of the headphone buttons. But my `NSLog`s in `ddhidAppleMikey:press:upOrDown:` didn't get printed, the method having not been called. Since all the other applications I found using DDHidLib were GUI apps using `NSApplication`, I decided to take this approach here. Set up the `NSApplication` in `main.c` and added a new `AppDelegate` class. It seems like the reference to my `HeadphoneKey` instance wasn't getting retained or something. When I moved the: HeadphoneKey *h = [[HeadphoneKey alloc] init]; line into `AppDelegate`'s `applicationDidFinishLaunching:`, nothing changed. However, when I moved all code from `HeadphoneKey` into `AppDelegate`, my `ddhidAppleMikey:press:upOrDown:` method _did_ get called. At that point, it was logical to try adding a `HeadphoneKey` instance variable and `init`ing into that variable. As a result, we now have a working `ddhidAppleMikey:press:upOrDown:` delegate method that correctly logs the headphone key events! Here are the reference applications I looked at using DDHidLib, found using a simple GitHub search: - https://github.com/radiant-player/radiant-player-mac/pull/450/files - https://github.com/7hil/mac_ear_control/blob/8859ed554517ce798b8ae7c2d0e78610b9994300/mac_ear_control/AppDelegate.m - https://github.com/7hil/mac_ear_control/blob/8859ed554517ce798b8ae7c2d0e78610b9994300/mac_ear_control/AppDelegate.m - https://github.com/schrekia/beardedspice-enhanced/blob/a9b78c0dbae6bca2cb0d2ecc362e4b7fe5b02129/BeardedSpiceControllers/BSCService.m - https://github.com/beardedspice/beardedspice/blob/8e1aea5bda68395e6b0d866bca9289a2a5ba40ed/BeardedSpiceControllers/BSCService.m - https://github.com/beardedspice/beardedspice/blob/8e1aea5bda68395e6b0d866bca9289a2a5ba40ed/BeardedSpiceControllers/BSCService.m - https://github.com/BarakaAka1Only/radiant-player-mac-BarakaLyrics/blob/1ce889bbb80f081209aff7936a329a3b426462e9/radiant-player-mac/AppDelegate.m - https://github.com/zsszatmari/MagicKeys/blob/210015d5da876cd7bb1daf73efa3c775c18e7973/MagicKeys-Agent/SPMediaKeyTap.m Thanks immensely this Cocoa With Love article from Matt Gallagher, which was invaluable in showing me how to create a minimal Cocoa application without needing a nib, Info.plist, or even application bundle (instead putting everything in a single executable, making it easier to distribute this as a command-line application with a built-in daemon): https://www.cocoawithlove.com/2010/09/minimalist-cocoa-programming.html
2018-08-15Try to get headphone button eventsTeddy Wing
Try to set up a listener for headphone button events. Doesn't appear to work. The initialiser is called, but the delegate method doesn't appear to be. I'm not seeing any of those log messages. Followed an example from here: https://github.com/radiant-player/radiant-player-mac/pull/450/files Not sure what I'm doing wrong yet, but decided I should commit what I have since I can't figure it out right now.
2018-08-15Link static DDHidLib library instead of frameworkTeddy Wing
Since the framework is external, we can't link it directly as it's a third-party library. As such, it would be separate from our executable. Instead, link against the static DDHidLib library so that it gets bundled into the executable.
2018-08-14Add `HeadphoneKey` classTeddy Wing
This will be our delegate for the DDHID key listener.
2018-08-07Add DDHidLib framework as a target dependencyTeddy Wing
2018-08-07Add submodule for DDHidLib libraryTeddy Wing
This will hopefully make it easier to interface with `IOHIDLib` and get events from headphone buttons.
2018-08-06Add .gitignoreTeddy Wing
Taken from https://www.gitignore.io/api/objective-c with modifications. Cleaned up the comments and got rid of things I didn't think were necesary.
2018-08-06New Xcode 9.2 command-line tool projectTeddy Wing