From 3eec60fae6803cda80077eea63336d363f874684 Mon Sep 17 00:00:00 2001 From: Hans-Christian Ebke Date: Mon, 14 Mar 2022 21:08:35 +0100 Subject: [PATCH 1/2] Add option -di to specify display by screen ID --- src/ddcctl.m | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/ddcctl.m b/src/ddcctl.m index 2a258d5..05746d2 100644 --- a/src/ddcctl.m +++ b/src/ddcctl.m @@ -214,11 +214,13 @@ int main(int argc, const char * argv[]) // Defaults NSString *screenName = @""; NSUInteger displayId = -1; + const char *displayUid = NULL; NSUInteger command_interval = 100000; BOOL dump_values = NO; NSString *HelpString = @"Usage:\n" @"ddcctl \t-d <1-..> [display#]\n" + @"\t-di <0-..> [display id (overrides -d if specified)]\n" @"\t-w <0-..> [delay in usecs between settings]\n" @"\t-W <0-..> [timeout in nanosecs for replies]\n" @"\n" @@ -261,6 +263,12 @@ int main(int argc, const char * argv[]) displayId = atoi(argv[i]); } + else if (!strcmp(argv[i], "-di")) { + i++; + if (i >= argc) break; + displayUid = argv[i]; + } + else if (!strcmp(argv[i], "-b")) { i++; if (i >= argc) break; @@ -400,6 +408,31 @@ int main(int argc, const char * argv[]) } } + if (displayUid != NULL) { + char *endptr; + uint uid = strtol(displayUid, &endptr, 10); + if (endptr == displayUid) { + NSLog(@"Display ID needs to be numeric"); + exit(1); + } + int i = 1; + bool found = false; + for (NSNumber *dispId in _displayIDs) + { + if (uid == dispId.unsignedIntegerValue) { + NSLog(@"UID Match: %d", i); + displayId = i; + found = true; + break; + } + ++i; + } + if (!found) { + NSLog(@"Display ID %d not found", uid); + exit(1); + } + } + if (0 >= displayId || displayId > [_displayIDs count]) { // no display id given, nothing left to do! NSLog(@"%@", HelpString); From c3fc29d9c53820d14afcd416adf6cc53baad444d Mon Sep 17 00:00:00 2001 From: Hans-Christian Ebke Date: Mon, 14 Mar 2022 21:15:50 +0100 Subject: [PATCH 2/2] Remove debug log msg --- src/ddcctl.m | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ddcctl.m b/src/ddcctl.m index 05746d2..b9f5907 100644 --- a/src/ddcctl.m +++ b/src/ddcctl.m @@ -420,7 +420,6 @@ int main(int argc, const char * argv[]) for (NSNumber *dispId in _displayIDs) { if (uid == dispId.unsignedIntegerValue) { - NSLog(@"UID Match: %d", i); displayId = i; found = true; break;