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

python - matplotlib:如何拿起 shift 点击图?

我有一个 matplotlib,我创建了一个button_press_event这样的:

现在是否可以将滚轮点击处理程序修改为这样的东西

似乎button_press_event不支持按键,key_press_event也不支持鼠标点击,但我不确定。

有办法吗?

0 投票
1 回答
841 浏览

actionscript-3 - Flex:确定在 MouseEvent 期间是否按住 Space 键

该类MouseEvent具有 properties altKey,我可以使用它ctrlKey来确定事件发生时是否按下shiftKey了修饰键(即AltCtrlShift )。

但我想确定在 MouseEvent 期间是否按住Space键。我怎样才能做到这一点?

0 投票
0 回答
717 浏览

macos - 使用 Ctrl+Alt 和 ArrowUp 来“绑定”鱼

在 Fish 2.0.0 shell 上,我想用一些命令绑定Ctrl++ 。但我似乎无法弄清楚如何做到这一点:AltArrowUp

bind \c\earrow-up 'touch /tmp/it_worked'

我相信我有两个问题,一个是Ctrl和之间的组合Alt,另一个是我不知道如何定义向上箭头序列。

实际上我尝试了一些不那么复杂的[关键: bind \c\[ 'touch /tmp/it_worked'

但这似乎也不起作用。

我在 Mac OSX 10.7 上。

更新:有一个错误:https ://github.com/fish-shell/fish-shell/issues/1024

0 投票
4 回答
9694 浏览

java - KeyEvent 侦听器中的多个键

我想知道如何在按键事件中按下所有按键。例如,我想为ctrl+编写一个f可以切换全屏的监听器。我如何检查是否在一个事件中同时按下ctrl 和? f


编辑1:

我尝试打印KeyEvent.getModifiersExText(e.getModifiersEx())和输入ctrl+ f,但结果是这样?

0 投票
1 回答
44559 浏览

c - 从 Linux 输入设备访问密钥

我想要做什么

所以,我一直在尝试在 Linux 中访问键盘输入。具体来说,我需要能够在按下其他键的情况下访问修饰键。此外,我希望能够在没有运行 X 系统的情况下执行此操作。

所以,简而言之,我的要求是:

  • 在 Linux 上工作
  • 不需要 X11
  • 可以在不按下任何其他键的 情况下检索修饰键按下
    • 这包括以下键:
      • 转移
      • 控制
      • Alt
    • 我只需要一个简单的0 = not pressed1 = currently pressed让我知道在检查键盘时是否按下了键

我的电脑设置

我的普通 Linux 机器正在开往我的新公寓的卡车上;所以,我现在只有一台 Macbook Air 可以使用。因此,我在虚拟机中运行 Linux 来测试这一点。

VirtualBox 中的虚拟机

  • 操作系统:Linux Mint 16
  • 桌面环境:XFCE

下面的一切都是在这种环境下完成的。我已经尝试过运行 X 和其他 tty 之一。

我的想法

如果有人可以纠正我,我会改变这个。

我做了很多阅读,意识到更高级别的库不提供这种功能。修饰键与其他键一起使用以提供备用键代码。通过 Linux 中的高级库访问修饰键本身并不容易。或者,更确切地说,我还没有在 Linux 上找到用于此的高级 API。

我认为libtermkey将是答案,但它似乎并不比普通的击键检索更好地支持 Shift 修饰键。我也不确定它是否在没有 X 的情况下工作。

在使用 libtermkey 时(在我意识到它在 Shift-Return 之类的情况下不会发生转变之前),我打算编写一个可以运行以收集键盘事件的守护程序。运行守护程序的副本将简单地通过管道传输对键盘数据的请求并接收键盘数据作为响应。我可以使用此设置让某些东西始终在后台运行,以防我无法在特定时间检查键码状态(必须在它们发生时接收键码)。

以下是我编写可以从 Linux 键盘设备读取的程序的两次尝试。我还附上了我的小支票,以确保我拥有正确的设备。

尝试#1

我曾尝试直接访问键盘设备,但遇到了问题。我在这里尝试了另一个 Stack Overflow 线程中的建议。它给了我一个分段错误;所以,我把它从 fopen 改为 open:

虽然没有分段错误,但没有任何按键指示(不仅仅是修饰键)。我使用以下方法对此进行了测试:

我已经用它来测试命令的成功返回码了。所以,我知道这很好。我还输出了要检查的密钥(始终为 0)和掩码(0100)。它似乎没有检测到任何东西。

尝试#2

从这里开始,我想我会尝试一种稍微不同的方法。我想弄清楚我做错了什么。在页面提供了一个演示打印关键代码的片段之后,我将其捆绑到一个程序中:

以前,我将大小设置为 16 字节而不是 128 字节。老实说,我应该多花一点时间了解 ioctl 和 EVIOCGKEY。我只知道它应该将位映射到特定键以指示按下或类似的东西(如果我错了,请纠正我!)。

我最初也没有循环,只需按住各种键即可查看是否出现键码。我什么也没收到;所以,我认为循环可能会使检查更容易测试,以防遗漏某些东西。

我怎么知道输入设备是正确的

我通过cat在输入设备上运行对其进行了测试。具体来说:

当我使用 cat 开始输出时,垃圾 ASCII 在按键和释放事件中被发送到我的终端,这些事件从返回(回车)键开始。我也知道这似乎与我运行 Linux VM 的 Macbook 上的修改键(如 shift、control、function 甚至 Apple 的命令键)配合得很好。输出在按键被按下时出现,从随后按键发出的信号开始迅速出现,在按键松开时输出更多的数据。

因此,虽然我的方法可能不是正确的(我愿意听到任何替代方案),但该设备似乎提供了我需要的东西。

此外,我知道这个设备只是一个指向 /dev/input/event2 运行的链接:

我已经使用 /dev/input/event2 尝试了上述两个程序,但没有收到任何数据。在 /dev/input/event2 上运行 cat 提供与链接相同的输出。

0 投票
0 回答
1572 浏览

vb.net - KeyPress 事件中的多个按键检测

我正在使用 Visual Studio 2013 并在 VB.NET 中编写。我正在创建一个在学校实习的项目。现在,在我的一种表格中,我有它,您必须在其中输入您的姓名。这里有一些相关信息。

对于文本框,我确实有属性,ShortcutsEnabled = False因此如果这是我的问题,用户无法复制并粘贴到文本框中,那么我只需要不使用它。现在,我这样做是为了让我的错误检查 Sub 更简单、更简洁,这样我就不必检查 IsNumeric。我不必检查的原因是因为在文本框的 KEYPRESS (not keydown) 事件中我限制了允许的输入。

现在,我想做的是允许用户同时按下“Ctrl+A”,以便他们可以选择框中的所有文本以方便使用。请记住,我有 ShortcutsEnabled = False 的文本框属性

这不起作用:

新行 --> (e.KeyChar <> Chr(61) AndAlso ModifierKeys <> Keys.Control)然后

注意:因为我使用的是 KEYPRESS 事件而不是 keydown 事件,所以唯一e.key可行的代码是e.keychar||||| e.keycode并且e.keyvalue在此事件处理程序中不可用

0 投票
1 回答
1949 浏览

macos - 映射大写仅锁定在vim中?

我真的很希望能够将大写锁定键映射到Ctrl,但只能在 vim 中。我看到了这个,但我使用的是 OS X。是否有 OS X 替代 AutoHotKey,或者是否有另一种方法可以为修饰键创建特定于应用程序的映射?

0 投票
0 回答
388 浏览

c - 读取 C 中的箭头和其他特殊键,没有 ncurses

我遇到了一个新问题:我想为 Linux 创建一个 shell,但我不知道如何在不使用 ncurses 的情况下读取特殊输入键,如箭头键、CTRL 键或 F11 键。

我不能使用 ncurses,因为我想打印STDOUTand STDERR。(除非有办法,我不知道)。另一方面,我不想有“^[[C”-Output. 所以我可能也不能使用getchar

那么我将如何做到这一点呢?

0 投票
2 回答
4596 浏览

c - 确定 Linux 键盘事件设备

另一个问题,Accessing Keys from Linux Input Device

提供了有关如何在没有按下其他键时在 Linux 文本控制台中识别修饰键按下的工作 C 代码。

但是,要应用该技巧,您必须知道/dev/input/event*记录键盘事件的特定文件。

如何确定该文件的名称?

0 投票
1 回答
379 浏览

c# - 如何响应键盘和弦并将输入的字母键替换为特殊键?

我想在使用 C# 的 WinForms 应用程序的文本框中,用特殊字符替换某些键盘和弦。例如,如果用户输入“Ctrl+A”,我想在文本框中插入字符“á”;如果用户输入“Ctrl+Shift+A”,我想在文本框中插入字符“Á”等。

根据我在这里找到的内容,我从这个开始:

...但它不值得在绝望和迫切需要织补的情况下穿上一件没有织补的袜子。消息框不显示任何内容(一个空字符);如果没有找到,我试图通过返回来抢占单个键,但这也不起作用。

那么实际上,我如何才能响应定义的和弦,并在截取键入的内容后将特殊键插入文本框?

更新

Idle_Mind 的回答很棒,但是仍然有两个键不起作用——“Ñ”,应该由 Ctrl+Shift+N 产生,以及“¡”,因为似乎没有与“!”对应的 Keys 成员。 " 我可以尝试转移。

注释和注释掉的部分清楚地表明了什么不起作用。