问题标签 [modifier-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
90 浏览

autohotkey - ; 作为新的修饰键

我想;成为一个新的修饰键。以下工作几乎完美。

以下愿望清单中只有第 2 点不起作用。有人知道如何修复此代码吗?

  1. ;;单独按下时
  2. shift ;:单独按下时
  3. ;x成为第二个...
  4. shift与成为第;一个x...
0 投票
1 回答
507 浏览

c# - C# 虚拟键修饰键使用发送输入法失败

我正在尝试将简单的键序列(ctrl-p、shift-p)发送到前台应用程序(恰好是 Visual Studio 编辑器单元测试缓冲区)。无论我尝试什么,我都无法让我的 control-p 或 shift-p 测试键序列正常工作。'p' 出现在缓冲区中,但不与控制/移位部分一起出现。

我已经从 SO 和网络轻松阅读了十几个代码示例,阅读了文档并尝试了太多无法计算的变体。但没有成功。我在标准的 Windows10x64 系统上,将代码作为单元测试运行。

下面的代码设置了修饰键的虚拟键和扫描码,这在实践中可能是错误的。我尝试了两种方法都没有成功。我包含了设置两者的代码,以便您可以看到我用于这两个字段的代码。

有谁知道我做错了什么?谢谢你。

** 更新 ** 我的代码没有失败。我在 Visual Studio 中的单元测试中运行它,它阻止了修改键。当我在单元测试之外运行相同的代码(没有所有调试层等)时,代码运行良好。

教训:不要尝试在单元测试中调试您的 SendInput 代码修饰键!

0 投票
1 回答
355 浏览

c# - 按住修饰键时,所有 WPF 上下文菜单似乎都无法正确处理突出显示的项目

它发生在我所有的 WPF 应用程序中,Visual Studio 2019(绝对基于 WPF)也表现出这种奇怪的行为:

只需在解决方案资源管理器中右键单击一个项目,同时按住 Control 键,您应该注意到,如果您继续按住 Control 修饰符,突出显示的项目将间歇性地工作。

起初,我假设网格和列表控件仍在捕获用于项目选择的修饰键,但这个问题也发生在简单控件(如标准按钮)上的上下文菜单中。

有没有办法解决这个故障?


这是一个带有 wpf 应用程序上下文菜单的 gif。首先我正常移动鼠标,然后Ctrl按住:

如您所见,它出现故障(未突出显示菜单项)。

0 投票
1 回答
61 浏览

javascript - Vue:按住键盘修饰符时如何更改按钮的文本?

使用 Vue,我试图让按钮在按住 Shift 键时改变其行为。更改事件的行为非常容易,click如下所示:

但是,我正在努力更改按钮的文本以反映这种行为。默认文本是Forward,我正在尝试将其更改为Backward按住 Shift 键的时间。

我尝试使用@mouseover.shift但它还不够好,因为它没有捕捉到的情况mouse enters the button, then user holds shift

0 投票
1 回答
240 浏览

python - 检测何时按下 Ctrl(或其他修饰键)的正确方法

我想以是否按下修饰键 (Ctrl) 为条件进行操作。我发现的一种解决方法是安装一个事件过滤器并用于QApplication.queryKeyboardModifiers()检测何时Ctrl被按下,并QApplication.keyboardModifiers()检测何时Ctrl被释放:

但是,我担心这是对.queryKeyboardModifiers()and.keyboardModifiers()函数的意外使用,因此以后可能会导致更多麻烦。是否有适当的方法来检测何时单独按下/释放修改键(即没有按下任何其他键)?

虽然我使用的是 PySide6,但如果它们有帮助,我会接受 C++ 或 PyQt 中的答案。

0 投票
1 回答
92 浏览

qt - QKeyEvent.nativeModifiers() 是什么?

QKeyEvent.nativeModifiers() 是什么?文档没有说太多(https://doc.qt.io/qtforpython/PySide6/QtGui/QKeyEvent.html#PySide6.QtGui.PySide6.QtGui.QKeyEvent.nativeModifiers)。据我了解,通过在 QKeyEvent 对象上调用此方法返回的整数表示修饰键(Ctrl、Shift、Alt 等)的完整状态。

此外,我会假设这些整数和它们各自的修饰符状态之间的映射是系统的,那么有没有办法测试给定的修饰符状态是否包含特定的修饰符(例如,通过使用“&”运算符)?

重要的是,本机修饰符是否跨平台,以便 PC 上的 Left Ctrl 按键返回与 Mac 上的 Left Command 相同的整数(因为 Qt.Key_Control 对应于 MacOS 命令键)?

0 投票
0 回答
12 浏览

macos - Macos 结合了来自 2 个设备的 HID 键输入

我正在尝试绑定鼠标上的键移以将其与键盘输入结合起来(例如:shift+1、shift+2)

我正在使用的键盘设备是 Razer tartarus,他们的软件在 Monterey 上对我来说并不能很好地运行,所以我编写了一个简单的 Objective-C 脚本来重新映射输入并且效果很好,我还可以使用重新映射鼠标上的输入它附带的软件可以发送键移或shift+1,它可以工作。

但是,当我按住鼠标移位并使用键盘发送键时,不再检测到移位。如果我在 tartarus 上按住 shift 并按下鼠标上的按钮,也会发生同样的情况。

但是我发现如果我使用正常的键盘移位并按下鼠标上的一个按钮,它检测到它有移位+按钮。

我不太确定引擎盖下发生了什么,但我真的很想为此提供一个解决方法,因为我真的需要能够在 Tartarus 键盘上的鼠标 + 键上使用 shift。

我用来在 tartarus 上重新映射键的脚本如下:

0 投票
0 回答
22 浏览

keyboard - ImageMagick 显示键绑定:使用“Alt”修饰键

我一直在使用 ImageMagick 'Display' 实用程序的一项功能,即记录为Keyboard Accelerators的功能。

这些是菜单上提供的各种功能的键绑定。据我所知,它们都工作得很好,除了使用 Alt 作为修饰键的那些,除了Alt+<Arrow Key> 来修剪图像侧面的像素,它们确实像记录的那样工作。

另一方面,使用 Meta (M-) 的绑定工作正常。

  • xev告诉我按 Alt 键实际上会发送

state 0x0, keycode 64 (keysym 0xffe9, Alt_L)

  • xmodmap告诉我mod1映射到Alt_L (0x40), Meta_L (0xcd)

我对修饰键处理的微妙技术不是熟悉。此外,据我所知,其中很多都是“与软件相关的”,尤其是关于 Alt/Meta 情况,并且事情发生在几个层面(硬件、操作系统、单个软件)。

我已经尝试过一些黑客攻击(我承认不是那么多),xmodmap将 Alt 和 Meta 修饰符重新映射到不同的键,但到目前为止没有任何效果,尽管我很可能没有完全意识到我在做什么,并且事实上,存在一个简单的解决方案,使用xmodmap.

有没有办法display-im6使用 Alt+key 使用“键盘加速器”,同时仍然可以访问使用 Meta 作为修饰符的那些?如果可能的话,我想保留其他软件的当前行为(也就是说,如果解决方案涉及大量重新映射修饰键以使其他软件无法像以前一样工作,这可能是一个问题......)?