尝试模拟Tab键和Shift + Tab键(具有反向代码)的功能,这些键具有背后的代码功能,因此可以与“按钮”或本例中的键盘上的其他键一起使用。
在模拟制表键工作之后,我不确定如何同时模拟两个按键的按下来模拟Shift + Tab
private void Tab(string s)
{
InputInjector inputInjector = InputInjector.TryCreate();
var info = new InjectedInputKeyboardInfo();
if (s == "Right")
{
info.VirtualKey = (ushort)(VirtualKey.Tab);
}
else if (s == "Left")
{
//This doesn't actually exist, but How would I do this?
info.VirtualKey = (ushort)(VirtualKey.ShiftTab);
}
inputInjector.InjectKeyboardInput(new[] { info });
}
private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
{
switch (e.Key)
{
case VirtualKey.Number1:
Tab("Left");
break;
case VirtualKey.Q:
Tab("Right");
break;
}
}
到目前为止,当按Q键时,Tab可以正常工作,我只需要了解在按Number1键时如何执行Shift + Tab。任何帮助将不胜感激!
答案 0 :(得分:1)
它们被称为Modifiers
VirtualKey
+ VirtualKeyModifiers
https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.input.keyboardaccelerator.Modifiers https://docs.microsoft.com/en-us/uwp/api/windows.system.virtualkeymodifiers
如果您想使用InputInjector
,请查看ScanCode
,因为它们代表了键盘上各个键的唯一标识-现在它们对于所有键盘可能都不相同,但是Shift键应该是相同。我附上了常见的ScanCodes列表-阅读ScanCode可以看到它为您提供了什么价值。 InputInjector接受一个数组,因此仅路径您要注入的两个代码或找到组合的ScanCode
https://docs.microsoft.com/en-us/uwp/api/windows.ui.input.preview.injection.injectedinputkeyboardinfo https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html
尝试将Shift-Tab的ScanCode设置为0F
答案 1 :(得分:0)
回答我自己的问题。在遇到类似问题的另一个用户的帮助后,模拟多按钮按下的最简单方法如下:
InputInjector inputInjector = InputInjector.TryCreate();
var shift = new InjectedInputKeyboardInfo();
shift.VirtualKey = (ushort)(VirtualKey.Shift);
shift.KeyOptions = InjectedInputKeyOptions.None;
var tab = new InjectedInputKeyboardInfo();
tab.VirtualKey = (ushort)(VirtualKey.Tab);
tab.KeyOptions = InjectedInputKeyOptions.None;
inputInjector.InjectKeyboardInput(new[] { shift, tab });
在此示例中,我使用SHIFT + Tab。