[GH-ISSUE #720] Add DDC display input control to the menu #473

Closed
opened 2026-05-05 06:05:11 -06:00 by gitea-mirror · 26 comments
Owner

Originally created by @waydabber on GitHub (Oct 18, 2021).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/720

Feature Request

Add display input selector options to the menu (the presence of the options and the offered inputs should be user configurable).

Originally created by @waydabber on GitHub (Oct 18, 2021). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/720 ### Feature Request Add display input selector options to the menu (the presence of the options and the offered inputs should be user configurable).
gitea-mirror 2026-05-05 06:05:11 -06:00
Author
Owner

@adammw commented on GitHub (Oct 24, 2021):

+1 - especially if there's keyboard shortcuts to go with it too.

Currently I'm using a combination of BetterTouchTool to trigger a manual ddcctl script to toggle inputs which is a little slow since it has to wait to read the current input state, compared to if MonitorControl already knows the state from it's polling it can send the command instantly.

<!-- gh-comment-id:950330898 --> @adammw commented on GitHub (Oct 24, 2021): +1 - especially if there's keyboard shortcuts to go with it too. Currently I'm using a combination of BetterTouchTool to trigger a manual ddcctl script to toggle inputs which is a little slow since it has to wait to read the current input state, compared to if MonitorControl already knows the state from it's polling it can send the command instantly.
Author
Owner

@pjanx commented on GitHub (Nov 5, 2021):

Seconding this request, and offering sample code for Linux. I'm currently trying to figure out where to get input codes for Thunderbolt, though. My BenQ uses 0x15, which isn't present in MCCS 2.2a.

<!-- gh-comment-id:961787752 --> @pjanx commented on GitHub (Nov 5, 2021): Seconding this request, and offering [sample code for Linux](https://git.janouch.name/p/desktop-tools/src/branch/master/input-switch.c). I'm currently trying to figure out where to get input codes for Thunderbolt, though. My BenQ uses 0x15, which isn't present in MCCS 2.2a.
Author
Owner

@waydabber commented on GitHub (Nov 5, 2021):

Hope I'll have more time and I'll implement it. All the basic parts are in MC already but needs a nice GUI.

<!-- gh-comment-id:961812513 --> @waydabber commented on GitHub (Nov 5, 2021): Hope I'll have more time and I'll implement it. All the basic parts are in MC already but needs a nice GUI.
Author
Owner

@pjanx commented on GitHub (Nov 5, 2021):

I've written to VESA and BenQ, FWIW. In theory, it could be in Thunderbolt specs, but those aren't open. Then it could be in USB 4, but I can't find anything there either. Nor in VESA's library. Or two different display manufacturers could have just randomly agreed on a value.

<!-- gh-comment-id:961828353 --> @pjanx commented on GitHub (Nov 5, 2021): I've written to VESA and BenQ, FWIW. In theory, it could be in Thunderbolt specs, but those aren't open. Then it could be in USB 4, but I can't find anything there either. Nor in VESA's [library](https://app.box.com/s/vcocw3z73ta09txiskj7cnk6289j356b/folder/11133487793). Or two different display manufacturers could have just randomly agreed on a value.
Author
Owner

@waydabber commented on GitHub (Nov 5, 2021):

Display input codes and names are rather random, my LG display's inputs do not correspond to the usually accepted list for example. For this to work there must be a setting where the user can customize the values and corresponding names (the default list can be a starting point though).

<!-- gh-comment-id:961944405 --> @waydabber commented on GitHub (Nov 5, 2021): Display input codes and names are rather random, my LG display's inputs do not correspond to the usually accepted list for example. For this to work there must be a setting where the user can customize the values and corresponding names (the default list can be a starting point though).
Author
Owner

@pjanx commented on GitHub (Nov 5, 2021):

As a data point, my BenQ PD3220U uses standard DisplayPort and HDMI{1,2} values, IIRC Dell U2412M also did.

ddcutil capabilities extracts a list, so by default you could assign names according to MCCS 2.2a + 0x15 for Thunderbolt, and let the user customize it. It's just strings, anyway, could be "NUC" and "MBP".

<!-- gh-comment-id:961954647 --> @pjanx commented on GitHub (Nov 5, 2021): As a data point, my BenQ PD3220U uses standard DisplayPort and HDMI{1,2} values, IIRC Dell U2412M also did. `ddcutil capabilities` extracts a list, so by default you could assign names according to MCCS 2.2a + 0x15 for Thunderbolt, and let the user customize it. It's just strings, anyway, could be "NUC" and "MBP".
Author
Owner

@pjanx commented on GitHub (Nov 6, 2021):

Alright, I have found out that I have no use for MCCS Input Source. Because when I switch the input this way, my BenQ will not reconnect peripheries, and so there already needs to be output, or the display switches back before it switches USB, and I can't wake that computer's video output up.

Rather, I need to use the "KVM switch" feature, hidden underneath:

   Feature: E4 (Manufacturer specific feature)
      Values: 01 02 (interpretation unavailable)

and, for completeness, that works for the following panel, marketed to be "designed with the MacBook in mind":

      Mfg id:               BNQ
      Model:                BenQ PD3220U
      Product code:         32813
      Serial number:        W5K00458019
      Binary serial number: 21573 (0x00005445)
      Manufacture year:     2019,  Week: 22

@waydabber What do you think, is a simple per-display/manufacturer toggle possible? As in, a set of numbered buttons that would set that VCP, pre-toggled by the VCP's current value. And ideally with keyboard shortcuts, but that's a lot to ask for. Should I start a new issue?

I suppose I should be able to invoke it with https://github.com/waydabber/m1ddc until then. With some changes.

<!-- gh-comment-id:962371073 --> @pjanx commented on GitHub (Nov 6, 2021): Alright, I have found out that I have no use for MCCS Input Source. Because when I switch the input this way, my BenQ will not reconnect peripheries, and so there already needs to be output, or the display switches back before it switches USB, and I can't wake that computer's video output up. Rather, I need to use the "KVM switch" feature, hidden underneath: ``` Feature: E4 (Manufacturer specific feature) Values: 01 02 (interpretation unavailable) ``` and, for completeness, that works for the following panel, marketed to be "designed with the MacBook in mind": ``` Mfg id: BNQ Model: BenQ PD3220U Product code: 32813 Serial number: W5K00458019 Binary serial number: 21573 (0x00005445) Manufacture year: 2019, Week: 22 ``` @waydabber What do you think, is a simple per-display/manufacturer toggle possible? As in, a set of numbered buttons that would set that VCP, pre-toggled by the VCP's current value. And ideally with keyboard shortcuts, but that's a lot to ask for. Should I start a new issue? I suppose I should be able to invoke it with https://github.com/waydabber/m1ddc until then. With some changes.
Author
Owner

@waydabber commented on GitHub (Nov 6, 2021):

so instead of display input for your display e4 must be used with values 01 and 02? This seems to be a rather display specific things, but since this control will have an option to override the VCP and also I'd like to make the input list customizable, you could customize the input switch function (once implemented) to use this manufacturer specific VCP with the values is needs.

<!-- gh-comment-id:962417653 --> @waydabber commented on GitHub (Nov 6, 2021): so instead of display input for your display e4 must be used with values 01 and 02? This seems to be a rather display specific things, but since this control will have an option to override the VCP and also I'd like to make the input list customizable, you could customize the input switch function (once implemented) to use this manufacturer specific VCP with the values is needs.
Author
Owner

@pjanx commented on GitHub (Nov 6, 2021):

It's more like a separate function, in addition to input switching (it can only switch between two USB targets, unlike Input Source). It calls for some possibility to invoke custom functions, and perhaps an internal database of these, such as:

<display>
  <match mfg="BNQ"/>
  <control name="KVM Switch" vcp="E4" type="toggle"/>
  <input-source include="mccs2.2a"/>
  <input-source value="15" name="Thunderbolt 3"/>
</display>

I think ddcutil has something similar.

It sounds like a major task, I'll resolve it for myself using simpler means. I have zero Swift/Xcode experience.

<!-- gh-comment-id:962428314 --> @pjanx commented on GitHub (Nov 6, 2021): It's more like a separate function, in addition to input switching (it can only switch between two USB targets, unlike Input Source). It calls for some possibility to invoke custom functions, and perhaps an internal database of these, such as: ``` <display> <match mfg="BNQ"/> <control name="KVM Switch" vcp="E4" type="toggle"/> <input-source include="mccs2.2a"/> <input-source value="15" name="Thunderbolt 3"/> </display> ``` I think ddcutil has something similar. It sounds like a major task, I'll resolve it for myself using simpler means. I have zero Swift/Xcode experience.
Author
Owner

@stiligFox commented on GitHub (Dec 27, 2021):

Just want to throw in my +1 - was going to request this feature and see it's already open. I stream, so I tend to switch from macOS (on DisplayPort) on one monitor to my Nintendo Switch (on HDMI) so that I watch the game directly while streaming, and having to do the whole reach around to change inputs with the OSD is cumbersome! Would love the option to be able to switch inputs from within macOS. Thanks!

<!-- gh-comment-id:1001305874 --> @stiligFox commented on GitHub (Dec 27, 2021): Just want to throw in my +1 - was going to request this feature and see it's already open. I stream, so I tend to switch from macOS (on DisplayPort) on one monitor to my Nintendo Switch (on HDMI) so that I watch the game directly while streaming, and having to do the whole reach around to change inputs with the OSD is cumbersome! Would love the option to be able to switch inputs from within macOS. Thanks!
Author
Owner

@klsetzer commented on GitHub (Jan 23, 2022):

+1 This is my primary interest in a tool like MonitorControl. I'm currently using ddcctl + Alfred (which is alright).

<!-- gh-comment-id:1019412862 --> @klsetzer commented on GitHub (Jan 23, 2022): +1 This is my primary interest in a tool like MonitorControl. I'm currently using ddcctl + Alfred (which is alright).
Author
Owner

@qoodanny commented on GitHub (May 16, 2022):

I am looking forward to see input control for LG Monitor!

<!-- gh-comment-id:1127097329 --> @qoodanny commented on GitHub (May 16, 2022): I am looking forward to see input control for LG Monitor!
Author
Owner

@vinschi commented on GitHub (May 19, 2022):

+1 would be nice that monitor control could switch the inputs as displaybuddy

<!-- gh-comment-id:1131992782 --> @vinschi commented on GitHub (May 19, 2022): +1 would be nice that monitor control could switch the inputs as displaybuddy
Author
Owner

@Alberick commented on GitHub (Jun 1, 2022):

+1 I think this would definitely be a killer feature.

<!-- gh-comment-id:1143829747 --> @Alberick commented on GitHub (Jun 1, 2022): +1 I think this would definitely be a killer feature.
Author
Owner

@Ilapides commented on GitHub (Jun 1, 2022):

+1 Why I'm here.

<!-- gh-comment-id:1144175367 --> @Ilapides commented on GitHub (Jun 1, 2022): +1 Why I'm here.
Author
Owner

@vju42 commented on GitHub (Sep 10, 2022):

+1 yes this is required by me as well. I have a dual-4K setup and use both a business MacBook Pro 2021 as well as a private macmini m1 2020. This would allow with a shortcut to move one or both screens to the other computer and with the new macOS transparency use only one mouse and keyboard.

<!-- gh-comment-id:1242672371 --> @vju42 commented on GitHub (Sep 10, 2022): +1 yes this is required by me as well. I have a dual-4K setup and use both a business MacBook Pro 2021 as well as a private macmini m1 2020. This would allow with a shortcut to move one or both screens to the other computer and with the new macOS transparency use only one mouse and keyboard.
Author
Owner

@orpiske commented on GitHub (Nov 14, 2022):

+1 I'd love to have this feature as well!

<!-- gh-comment-id:1313270934 --> @orpiske commented on GitHub (Nov 14, 2022): +1 I'd love to have this feature as well!
Author
Owner

@waydabber commented on GitHub (Nov 14, 2022):

Hi @orpiske - just implemented this in BetterDisplay (free feature), will be available in the next version (will be released in the coming days if things go well).

https://github.com/waydabber/BetterDisplay/issues/604

This will probably not make it into MonitorControl anytime soon except if someone from the community adds it as a nicely done PR, the door is always open! :)

<!-- gh-comment-id:1313369670 --> @waydabber commented on GitHub (Nov 14, 2022): Hi @orpiske - just implemented this in BetterDisplay (free feature), will be available in the next version (will be released in the coming days if things go well). ![](https://user-images.githubusercontent.com/37590873/201016553-9c8140c4-24db-499b-bae5-5059b0c26865.png) https://github.com/waydabber/BetterDisplay/issues/604 This will probably not make it into MonitorControl anytime soon except if someone from the community adds it as a nicely done PR, the door is always open! :)
Author
Owner

@orpiske commented on GitHub (Nov 14, 2022):

@waydabber you rock! I'll take a look at it :D

<!-- gh-comment-id:1313371236 --> @orpiske commented on GitHub (Nov 14, 2022): @waydabber you rock! I'll take a look at it :D
Author
Owner

@waydabber commented on GitHub (Nov 14, 2022):

Note: the beta is available at https://github.com/waydabber/BetterDisplay/releases/tag/v1.3.5-beta. If you have any issues with it you can let me know at the BetterDisplay project's GitHub issues tab. I generally don't want to confuse the two apps, just mentioned this here since I know a lot of folks wanted it.

<!-- gh-comment-id:1314154806 --> @waydabber commented on GitHub (Nov 14, 2022): Note: the beta is available at https://github.com/waydabber/BetterDisplay/releases/tag/v1.3.5-beta. If you have any issues with it you can let me know at the [BetterDisplay project's GitHub issues tab](https://github.com/waydabber/BetterDisplay/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc). I generally don't want to confuse the two apps, just mentioned this here since I know a lot of folks wanted it.
Author
Owner

@henryxparker commented on GitHub (Jul 25, 2023):

+1 Just wanted to bump. This would still be a killer feature

<!-- gh-comment-id:1650085581 --> @henryxparker commented on GitHub (Jul 25, 2023): +1 Just wanted to bump. This would still be a killer feature
Author
Owner

@findthebug commented on GitHub (Oct 9, 2023):

yes, would be cool feature

<!-- gh-comment-id:1752563989 --> @findthebug commented on GitHub (Oct 9, 2023): yes, would be cool feature
Author
Owner

@waydabber commented on GitHub (Oct 9, 2023):

This feature probably won't be implemented in MC, check out BetterDisplay for this feature as it's been available there for a while now for free.

<!-- gh-comment-id:1752803487 --> @waydabber commented on GitHub (Oct 9, 2023): This feature probably won't be implemented in MC, check out [BetterDisplay](https://betterdisplay.pro) for this feature as it's been available there for a while now for free.
Author
Owner

@waydabber commented on GitHub (Oct 18, 2023):

As the feature set of MonitorControl is now considered final by the team, I'll close this issue. Of course if somebody comes along with a well implemented PR containing this feature, it will be approved.

<!-- gh-comment-id:1768757193 --> @waydabber commented on GitHub (Oct 18, 2023): As the feature set of MonitorControl is now considered final by the team, I'll close this issue. Of course if somebody comes along with a well implemented PR containing this feature, it will be approved.
Author
Owner

@Dentrax commented on GitHub (Apr 2, 2024):

Hey! I just fresh installed this app by thinking I could change the input source but then I hit this issue, which is abondoned. It seems people did stop writing on this issue after it has implemented in BetterDisplay.

BetterDisplay would a bit overkill for my need: I'd like to change input source by pressing a key on keyboard or moving cursor to the edge.

I was wondering if its because of a technical blocker or by-design.

<!-- gh-comment-id:2032717228 --> @Dentrax commented on GitHub (Apr 2, 2024): Hey! I just fresh installed this app by thinking I could change the input source but then I hit this issue, which is abondoned. It seems people did stop writing on this issue after it has implemented in BetterDisplay. BetterDisplay would a bit overkill for my need: I'd like to change input source by pressing a key on keyboard or moving cursor to the edge. I was wondering if its because of a technical blocker or by-design.
Author
Owner

@appdcs commented on GitHub (Jun 1, 2024):

Input control is not available in BetterDisplay, via hotkeys, after the trial run ends.
I would recommend reopening this issue and making simple input switching available in MonitorControl.

As @Dentrax said, BetterDisplay is overkill compared to MonitorControl. The only think missing from MonitorControl IMHO is switching to an input via hotkey.

<!-- gh-comment-id:2143139188 --> @appdcs commented on GitHub (Jun 1, 2024): Input control is not available in BetterDisplay, via hotkeys, after the trial run ends. I would recommend reopening this issue and making simple input switching available in MonitorControl. As @Dentrax said, BetterDisplay is **overkill** compared to MonitorControl. The only think missing from MonitorControl IMHO is switching to an input via hotkey.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/MonitorControl#473
No description provided.