问题标签 [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 投票
1 回答
527 浏览

c# - How can I capture Ctrl+Shift+N?

With the help of some of the Cyberintelligensia, I am now able to use combinations of Ctrl+[some displayable key], Ctrl+Shift+[some displayable key], and Ctrl+Shift+Alt+[some displayable key] to add accented chars into a textbox.

The question and its answers are here.

However, there is still one recalcitrant combination. I used CodeCaster's suggestion to add a call to "Debug.WriteLine(keyData);" to see what in tarnation was being pressed (which keys). This works fine in most cases; for example, if I mash "Ctrl+Shift+E" it reports:

So it is responding as I expect, and enters a "É" in the textbox. That technique helped me to see what was needed to respond to the "!" character (D1).

However, there is one key combination that it is not discerning, namely "Ctrl+Shift+N" (Ctrl+N works). When I press "Ctrl+Shift+N" the Output window reports:

IOW, it's missing an expected "N", and so nothing is added to the textbox ("Ñ" should be added).

This is the only case that fails; all the other key combinations work.

Ctrl+N does work. I see "ñ" in the textbox and get:

...in the Output window.

Why is the "N" in the Ctrl+Shift+N chord not "heard" and how can I rectify this?

This is the code that I have now:

As mentioned, everything works except the code to trap Ctrl+Shift+N, which should emit "Ñ".

UPDATE

I added this:

...from here but it doesn't help matters.

UPDATE 2

An odd thing is that the Ctrl+Shift+N keyboard shortcut to open Notepad no longer works on my desktop (where I am working with the utility under discussion), but it does work in a remote desktop session (where I work on Sharepoint stuff).

Is the remote desktop connection really intercepting keystrokes on the desktop?

Even when logged off from the remote desktop session, though, the "blind spot" (Ctrl+Shift+N) remains within this desktop utility.

0 投票
1 回答
100 浏览

c# - 为什么在鼠标移动操作期间修饰键的状态没有按预期改变?

想知道有没有其他人有这个问题。在 El Capitan 上的 Parallels 11 中使用 Windows 10 VM 时,如果您在按下鼠标键的鼠标事件中,您似乎无法检查修饰键。

我正在观察鼠标当前是否按下,Parallels 仅在鼠标按钮或不同的非修改键盘键更改状态时发送/存储修改键更改(或释放不同的修改键,但在按下时没有)。

所以......有人知道如何解决这个问题吗?我们绝对希望支持 Parallels。(我也向他们提交了一个关于这个问题的错误,因为它看起来肯定是错误的。)

这是代码。只需创建一个新项目并将其粘贴到主窗口的代码隐藏中。

0 投票
1 回答
1504 浏览

qt - 如何在 QML 中查询键盘修饰符?

Qt 通过 QGuiApplication::keyboardModifiers()提供了这一点。QML 方式是什么?

0 投票
1 回答
83 浏览

vba - 在 Worksheet_SelectionChange 上使用 Ctrl 作为修饰符

我想在以特定方式(双击、键修饰符等)单击锁定单元格时打开一个表单。

如果我使用Worksheet_BeforeDoubleClick,它会在关闭表单后显示警告,说明单元格已锁定(这很烦人)。

如果我使用Worksheet_SelectionChange不会出现警告,但每次选择单元格时都会出现表单(这有点多)。

无论如何要使用修饰符,例如Ctrl,与 结合Worksheet_SelectionChange,以便用户必须做出主动选择才能打开表单?

0 投票
5 回答
51830 浏览

javascript - 检测组合按键(Control、Alt、Shift)?

我试图在按下Ctrl++Alt时运行脚本。 Tampermonkey 如何同时使用 ctrl、alt 和 e 键触发?e

我试过了ctrlKey,和altKey。我没有发现任何有用的东西。
如何编辑下面的脚本以在Ctrl++上Alt触发e,而不仅仅是e

0 投票
1 回答
153 浏览

javascript - 用于在 GitHub 中按 Ctrl+Enter(内置热键)提交问题或发表评论时创建确认弹出窗口的用户脚本

测试网址:https ://github.com/darkred/test/issues/new

GitHub 允许在问题区域中公开 repo:

  • 提交一个只有 1 个字符作为标题且没有正文的新问题,并且
  • 发表评论只有 1 个字符。

上述情况经常发生在我身上,因为“提交问题或评论”的内置热键是Ctrl + Enter:在我的问题/评论文本准备好之前,我不小心按下了该键盘快捷键。


所以,我正在尝试制作一个脚本(使用 Greasemonkey),每当我尝试时会显示一个确认弹出窗口:

  • 提交新问题,或
  • 发表评论

via press Ctrl + Enter
如果用户Ok在弹出窗口中按下,则脚本允许提交,
但如果用户Cancel在弹出窗口中按下,则脚本停止提交。


我遇到了这两种方法:
在 Brock Adams 的有用评论之后,我有以下代码:

现在,只要我按 ,弹出窗口就会出现Ctrl + Enter问题是在弹出窗口中
按下时没有提交问题/评论Ok(即使我之前根本没有Cancel在弹出窗口中按下)。如何解决这个问题?
而且,在我按下弹出窗口一次后,如何重新允许提交问题/评论Cancel
换句话说:如何在 preventDefault() 之后重新启用默认值?

0 投票
1 回答
227 浏览

javascript - 用于在 GitHub 中新问题页面的标题文本框中按 Ctrl+Enter 或 Enter 时创建确认弹出窗口的用户脚本

(继续这个答案

我一直在尝试制作一个脚本(使用 Greasemonkey),每当我尝试以下操作时都会显示一个确认弹出窗口:

  • 提交新问题,或
  • 发表新评论。

via press Ctrl + Enter
如果用户Ok在弹出窗口中按下,则脚本允许提交,
但如果用户Cancel在弹出窗口中按下,则脚本停止提交。

在这些情况下,上面答案中的脚本可以正常工作。


我注意到,还有另一种提交问题的方法:
按下EnterCtrl+Enter同时关注问题标题文本框

我也想用脚本来涵盖这一点。

下面是我的代码。
如果我只是在新选项卡中打开新问题页面(https://github.com/darkred/test/issues/new)_(即不是通过单页应用程序工作流程,也就是历史 API)_),那么脚本在按下 时也有效Ctrl+Enter

我仍然遇到的问题是,如果我通过跟随New issue按钮(即通过历史 API)导航到新问题页面,
然后我按下Ctrl+Enter或只是Enter在标题文本框中,然后弹出窗口会暂时出现,但提交不是挡住了

实力:

  • 打开https://github.com/darkred/test/issues
  • 单击New Issue按钮(您将通过 History API 重定向到https://github.com/darkred/test/issues/new
  • (您会注意到现在的焦点在问题标题文本框上)
    键入 123 作为问题标题并将焦点保持在问题标题文本框上(将问题正文留空),
  • Ctrl+Enter(或只是Enter),
  • 现在请注意,确认弹出窗口将立即出现,
    但不会阻止提交。

我的脚本有什么问题?


作为参考,这里列出了 GitHub 的键盘快捷键列表:screenshot
当你按下 ? 在新的问题页面中。

0 投票
1 回答
161 浏览

windows-mobile - 获取 MC91 和 MC92 上修改键(橙色、蓝色、shift)的状态

我们开发了一个全屏运行的应用程序,因此修改器指示器不可见。

所以我现在需要一个解决方案来更新我们放在显示器上的橙色、蓝色和 shift 状态的图标。有趣的是这个解决方案应该适用于WinMobile 6.06.5CE6中的Omnii XT 10Omnii XT 15MC65WAP 3WAP 4MC91MC92

我使用移动设备 SDK V8.0_8.42743 获得了 Psion 设备的解决方案。它会迫使我根据操作系统将不同的 DLL 复制到设备上,但至少它运行良好。

在 MC65 上,我让它与摩托罗拉 EMDK 一起工作,用于 .NET v2.9(或 v2.8 - 都可以)。但是我希望这也适用于 MC91 和 MC92,但事实并非如此。那些实际上声称确实如此: 发行说明 - EMDK for .NET v2.8

然而事实证明,这些设备中的keybddr.dll具有不同的功能。虽然我可以得到他们的名字,但我仍然没有他们的签名,所以我只能猜测和希望。

MC91

MC65

MC91 和 MC92 剩下的唯一想法是自己分析 Windows 消息队列并记录不同的消息。但是,并非所有设备都发送橙色和蓝色的关键事件。我还必须跟踪消息序列,以启用、禁用、锁定这些修改键以及按下由这些键修改的键。这看起来工作量很大,而且很容易出错。不是我的老板愿意招待的。


问题:

有人可以建议一种方法来获取MC91MC92上的orangeblueshift状态,理想情况下可以在上面列出的所有设备和操作系统上运行吗?

0 投票
1 回答
207 浏览

python - pyqt5 - 修饰键中断拖放

我正在使用两个 QTableWidgets 在 python 3.5 和 Qt5.7 中创建一个应用程序,我希望能够将项目从一个表中拖放到另一个表中。我在两个表上都设置了拖放设置,一切正常,直到我按下修饰键(Ctrl、Alt、Shift 等)。从这一刻起,拖放功能停止工作。

我已经尝试对表进行子类化并重新实现 dnd 事件(QDragEnterEvent、QDragMoveEvent、QDropEvent),但没有成功。我还尝试使用 mousePreseEvent 重新实现鼠标事件以捕获拖动起点,并使用 mouseMoveEvent 创建具有正确 mimetype 的拖动,并创建一个 eventFilter 来捕获修饰键并在需要时禁用它们,但它们都不起作用。

使用拖放事件,我可以看到,在开始拖动移动时按下任何修改键后,会创建拖动事件,但之后也会创建拖放事件,并且 dnd 停止甚至不移动鼠标.

有没有人有解决方案或知道这种行为的原因?

我附上了一个使用 Qt5.7 设计器的 pyuic5 生成的简单代码,其中有两个 QListWidgets 可以观察到相同的问题。

仅供参考,开发系统是一台装有 Windows 10 的机器。

0 投票
2 回答
335 浏览

batch-file - 打开脚本文件进行编辑的更快方法

我可以使用 AutoHotkey 创建快捷方式来编辑脚本文件吗?

我知道您可以点击 Context+E,或右键单击并编辑。更快的方法是按住 Ctrl+Shift 并双击文件。一个很好的优先级是如何按住 Alt 并双击文件以直接进入“属性”对话框。或者按住 Ctrl+Shift 并双击文件夹以在新窗口中打开。

这显然适用于 AHK、BAT、VBS、REG 文件等语言文件。