Is it possible to know if a Visual Studio command was triggered from the keyboard or a menu? I'd like to write a plugin that monitored VS commands and suggested keyboard shortcuts for any commands chosen from a menu.
How can you tell if a Visual Studio command was triggered by keyboard or menu?
211 Views Asked by citizenmatt At
1
There are 1 best solutions below
Related Questions in VISUAL-STUDIO
- NuGet - Given a type name or a DLL, how can I find the NuGet package?
- Exception thrown at 0x0131EB06 Visual Studio
- Visual Studio 2015 Cordova Plugin Add Fail
- Cannot find InvalidCastException in C# Application
- generating C# code file during Visual Studio build
- Can I deploy multiple instances of my application on the same windows phone?
- Close the Solution Explorer window
- How to generate entity framework code-first migrations without using the package manager console?
- Implementing callback function for dialog-based application
- VB.net: How to make original variable value fulfill 2 statements?
- DLL being marked as DELETEPENDING
- String tokenizing in Visual Studio C++
- How to use "Multicharts Studies" in Visual Studio 2013?
- Programs Will Not Run In Visual Studio
- VB.Net: Display total when check boxes are checked
Related Questions in VSIX
- How to build Visual studio extension which install on top of an already installed extension
- In a VSIX package, how can I reuse the existing MEF for my dependency container?
- DirectX VSIX Installer Installation Failed
- In a Visual Studio Extension, how to detect when the debugger Continues
- In a Visual Studio Extension, get the line range of the function in which the debugger is stopped
- Adding a submenu to an existing menu in a Visual Studio 2013 extension
- How to tell Visual Studio to load only the extension I'm currently debugging (and nothing more)?
- The new project type and template does not show up after installing VSIX package
- VSIXInstaller.NoApplicableSKUsException: This extension is not installable on any currently installed products
- How to use newer Microsoft.CodeAnalysis reference in Roslyn analyzer targeting VS2015
- Creating VSIX package to install template to several project types?
- Get WPF control properties from the Properties Window
- How to access source code of a file from a Visual Studio Extension
- Visual Studio extension does not load in experimental instance
- How can I set a file name using a variable in a Visual Studio project template
Related Questions in VSIP
- Customising project debugging in Visual Studio project flavor
- Troubleshooting Plk Verification for Visual Studio Package in a VSIP Development Edition
- How to Extending vs2010 editor context menu for .js file?
- VSPackage fails PLK verification on clean machine, but passes on Dev machine when /noVSIP is set
- How can you tell if a Visual Studio command was triggered by keyboard or menu?
- Programmatically open a Remote url in Visual Studio
- Adding a TestSettings file to SolutionItems in VisualStudio
- How do I get access to existing icons from other components from a VS package?
- Drag Drop Within WPF ToolWindow in VS2010 Extension Not Allowed
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It is not possible to determine from the Command itself, how it was triggered. Neither can you get this information from the CommandEvent. This is by design, because Commands can be bound to an arbitrary number of triggers of any kind (including explicit invocation in some code).
What you can do, however, is to register yourself as a listener on all CommandBarButton.OnClick and CommandBarComboBox.OnChange in the tree DTE.CommandBars.Controls. Whenever one of the above events occurs, capture the very next CommandEvent. This is the command immediately triggered by the respective CommandBarControl.
I guess this is sufficient for the scenario you describe. Note, however, that you cannot conclude from this that all other commands are triggered by some shortcut, since commands can be triggered implicitly (through other commands). You can approximate this by checking whether or not a key is pressed, when a command occurs, but this is a rather fragile approach... If someone knows a better approach here, adds are welcome!