aboutsummaryrefslogtreecommitdiffstats
path: root/DomeKey.xcodeproj
AgeCommit message (Collapse)Author
2018-10-29Add `Sounds` classTeddy Wing
This will be used to play the mode activated & deactivated sounds via `NSSound` (hopefully).
2018-10-27Delete `KeyboardSimulator`Teddy Wing
We're no longer using this code. Keyboard simulation has been moved since a long while ago to the Rust library using the 'autopilot' library.
2018-10-27Delete `DKApplication`Teddy Wing
This was a test to see if we could get Bluetooth headphone events using media key events. I wasn't successful. Get rid of the code now that it isn't being used.
2018-10-24Add an `XDG` classTeddy Wing
For interacting with XDG directories.
2018-10-24Add `LicenseHandler`Teddy Wing
This class will encapsulate all license and trial handling.
2018-10-24DomeKey.xcodeproj: Change deployment target to 10.7Teddy Wing
Turns out the build had failed previously because the linked Rust library expects 10.7. Change the deployment target to match and now it works.
2018-10-24DomeKey.xcodeproj: Change deployment target to 10.6Teddy Wing
Include support for older OSes. The build currently fails with this target, so I'm going to look into what's going on. Unlikely to actually work on 10.6 since the Rust toolchain is built against 10.7, but should hopefully work from there.
2018-10-24DomeKey.xcodeproj: Add AquaticPrime source filesoTeddy Wing
Add the files to the project to compile them into the build.
2018-10-06Add DKApplicationTeddy Wing
Will be used to override the `sendEvent:` method to try to intercept media key events as described in https://weblog.rogueamoeba.com/2007/09/29/. Trying to find out if intercepting these events will enable the program to work with Bluetooth headphones.
2018-10-04Add a new `Mappings` classTeddy Wing
We'll reload the mappings file here.
2018-08-28Add dome_key_map.h to the projectTeddy Wing
2018-08-28Link with libdome_key_map.aTeddy Wing
Add libdome_key_map.a to the "Link Binary With Libraries" Build Phase to have our Rust code linked with DomeKey.
2018-08-27Add char_to_key_code.h header fileTeddy Wing
Make a corresponding header file for `char_to_key_code.m`. This enables us to include those functions in other source files.
2018-08-27Add char_to_key_code.mTeddy Wing
This file includes functions for getting a `CGKeyCode` from a character reference. Copied from Stack Overflow by Théo Winterhalter.
2018-08-27Add `KeyboardSimulator`Teddy Wing
A new class that will know how to simulate key presses in order to handle macros.
2018-08-16Random xcodeproj changeTeddy Wing
What does it mean?
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-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-06New Xcode 9.2 command-line tool projectTeddy Wing