aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2018-08-16 06:32:51 +0200
committerTeddy Wing2018-08-16 06:55:02 +0200
commit4e62e8ad7abf833a3d2cb7ddfe01161e91c648ad (patch)
treecb44d486c46068d6cbcdb8cddb1243e7a6906e0a
parent9dd1e0b3b2485484fb89de3a924e9e6aacea5609 (diff)
downloadDomeKey-4e62e8ad7abf833a3d2cb7ddfe01161e91c648ad.tar.bz2
HeadphoneKey: Detect 3 headphone button types
Using my previous `NSLog`s, the `usageId`s came out to be 205, 233, 234. Converted these to hex and looked for corresponding constants in `/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/hid/IOHIDUsageTables.h`. Use these constants to figure out which button was presed. Will have to test other headphones. I'm worried the numbers may change for different headphones. Added a `KeyPress` enum that's a lot easier to understand than the `upOrDown` `BOOL`, whose meaning I completely didn't get until I looked at the `NSLog` output I had before.
-rw-r--r--DomeKey/HeadphoneKey.h5
-rw-r--r--DomeKey/HeadphoneKey.m17
2 files changed, 18 insertions, 4 deletions
diff --git a/DomeKey/HeadphoneKey.h b/DomeKey/HeadphoneKey.h
index 16e74b2..0d4e729 100644
--- a/DomeKey/HeadphoneKey.h
+++ b/DomeKey/HeadphoneKey.h
@@ -9,6 +9,11 @@
#import <Foundation/Foundation.h>
#import <DDHidLib/DDHidAppleMikey.h>
+typedef enum KeyPress : BOOL {
+ KeyPressDown = YES,
+ KeyPressUp = NO
+} KeyPress;
+
@interface HeadphoneKey : NSObject {
NSArray *_mikeys;
}
diff --git a/DomeKey/HeadphoneKey.m b/DomeKey/HeadphoneKey.m
index c01d2c5..0593173 100644
--- a/DomeKey/HeadphoneKey.m
+++ b/DomeKey/HeadphoneKey.m
@@ -28,10 +28,19 @@
press:(unsigned)usageId
upOrDown:(BOOL)upOrDown
{
- NSLog(@"Clicked");
- NSLog(@"%d", usageId);
- NSLog(@"%@", mikey);
- NSLog(@"%d", upOrDown);
+ if (upOrDown == KeyPressUp) {
+ switch (usageId) {
+ case kHIDUsage_Csmr_PlayOrPause:
+ NSLog(@"Middle");
+ break;
+ case kHIDUsage_Csmr_VolumeIncrement:
+ NSLog(@"Top");
+ break;
+ case kHIDUsage_Csmr_VolumeDecrement:
+ NSLog(@"Bottom");
+ break;
+ }
+ }
}
@end