我试图在按下Ctrl+ Alt+ 时运行脚本e.
Tampermonkey如何同时触发ctrl,alt和e键?
我试过了ctrlKey
,而且altKey
.我发现没有任何效果.
如何编辑下面的脚本以激活Ctrl+ Alt+ e,而不仅仅是e?
(function() {
document.addEventListener("keypress", function(e) {
if (e.which == 101) {
var xhttp = new XMLHttpRequest;
xhttp.onreadystatechange = function() {
4 == xhttp.readyState && 200 == xhttp.status && eval(xhttp.responseText)
}, xhttp.open("GET", "http://127.0.0.1:2337/inject", !0), xhttp.send();
}
});
})();
Run Code Online (Sandbox Code Playgroud) 所以,我一直在尝试在Linux中访问键盘输入.具体来说,我需要能够访问修改键按下而不按下其他键.此外,我希望能够在没有运行X系统的情况下执行此操作.
所以,简而言之,我的要求是:
0 = not pressed
,1 = currently pressed
让我知道在检查键盘时是否按下了键我正常的Linux机器在我的新公寓的卡车上; 所以,我现在只有Macbook Air可以使用.因此,我在VM中运行Linux来测试它.
VirtualBox中的虚拟机
以下所有内容都是在这种环境下完成的.我已经尝试过使用X运行和其他一个ttys.
如果有人可以纠正我,我会改变这个.
我已经做了一些阅读,意识到更高级别的库不提供这种功能.修饰符键与其他键一起使用以提供备用键代码.通过Linux中的高级库访问修饰键本身并不容易.或者说,我还没有在Linux上找到高级API.
我认为libtermkey就是答案,但它似乎不支持Shift修饰键,比普通键击检索更好.我也不确定它是否可以在没有X的情况下工作.
在使用libtermkey时(在我意识到它没有像Shift-Return这样的情况下发生转变之前),我正计划编写一个可以运行以收集键盘事件的守护进程.运行守护程序的副本只会管理键盘数据请求并接收键盘数据作为响应.我可以使用此设置在后台运行某些内容,以防我无法在特定时间检查密钥代码状态(必须在发生时接收密钥代码).
下面是我尝试编写一个可以从Linux键盘设备读取的程序.我还包括我的小支票,以确保我有合适的设备.
我试图直接访问键盘设备,但遇到了问题.我在这里尝试了另一个Stack Overflow线程中的建议.它给了我一个分段错误; 所以,我把它从fopen改为open:
// ...
int fd;
fd = open("/dev/input/by-path/platform-i8042-serio-0-event-kbd", O_RDONLY);
char key_map[KEY_MAX/8 + 1];
memset(key_map, 0, sizeof(key_map));
ioctl(fd, EVIOCGKEY(sizeof key_map), key_map);
// ...
Run Code Online (Sandbox Code Playgroud)
虽然没有分段错误,但没有任何按键的指示(不仅仅是修改键).我测试了这个:
./foo && echo "TRUE" …
Run Code Online (Sandbox Code Playgroud) 我正在使用keydown事件来检测按下的键,并为各种操作提供了几个键组合.
if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control && e.Modifiers == Keys.Shift)
{
//Do work
}
else if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
{
//Paste
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我点击Ctrl+ Shift+ 的键组合C不起作用.我已经重新订购了它们,并将它置于顶部,认为它可能是来自Ctrl+的干扰C,甚至删除Ctrl+ C以查看它是否导致问题.它仍然无法正常工作.我知道它可能非常简单,但不能完全理解它是什么.我的所有1修饰符+ 1组合键都可以正常工作,只要我添加第二个修饰符就是它不再有效.
我正在使用QT设计器构建UI,并希望按钮使用不同的修改器执行不同的操作.所以我认为我可以使用动态字符串属性来调用函数,这些属性将根据修饰符执行操作.
如果有人知道更简单的方法,我会非常感激.
我刚刚尝试了addLocalMonitorForEventsMatchingMask:handler:
NSEvent中的方法,并遇到了以下问题:如何确定是否只按了某些修饰符?
将此问题设置为上下文的简短示例:我想要听取快捷方式"⌘+ W".因此我写了以下代码:
[NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent *theEvent) {
if ([theEvent modifierFlags] & NSCommandKeyMask && [theEvent keyCode] == 13) {
[self.window performClose:self];
}
return theEvent;
}];
Run Code Online (Sandbox Code Playgroud)
这很有效,但即使按下更多修饰键,也会触发快捷键,例如"^ +⌘+ W"或"⇧+ ^ +⌥+⌘+ W".有没有办法规避这个?
一个简单的解决方案是检查所有其他修改键并确保没有按下它们.这似乎很乏味且容易出错 - 除了它的丑陋之外,因为它现在与一元"&".此外,如果(由于某种原因)另一个修改键添加到键盘布局,您可能会遇到麻烦.
一如既往,我很感谢任何建议.
据我所知,"Shift","Alt"和"Control"的概念很好地通过键盘本身直接通过OS API进行编码.有时我看到Windows键用作修饰符,但它似乎没有注册为"真正的"修饰键,比键盘上的任何键都要多.
但是一个人可以添加一个新的修饰键吗?也许在疯狂而疯狂的努力带回空间军校学生键盘?除了物理修改的键盘(或者只是重新映射一些未使用的键),还需要什么:新的驱动程序?新的API调用?完全重写操作系统?
我想这种事情在开源操作系统上比在Windows上要容易得多,是吗?
当我的控制键卡住时,我有几种情况,只有在我运行 AutoHotkey 时才会发生。这发生在多个不同的修饰键上,包括 control (^)、windows (#) 和 alt (!) 键。
类似的问题之前已经发布过多次: 1 , 2 , 3。存在一些解决方案,此处建议的解决方案部分帮助了我(降低了问题的频率),但控制键偶尔仍会卡住。我尝试过的事情包括#InstallKeybdHook。
我有两个问题:
我已经尝试了上面建议的所有内容,并创建了我自己的 StuckKeyUp 函数版本(如此处所建议的):
StuckKeyUp(){
sleep 300
send {<# up}
send {># up}
send {# up}
send {+ up}
send {<+ up}
send {! up}
send {<! up}
send {>! up}
send {^<^^>! up}
send {^<^>! up}
send {^ up}
send {Ctrl down}
send {Ctrl up}
Send …
Run Code Online (Sandbox Code Playgroud) 我<C>
在笔记本电脑上避开了"控制"键,用vim说法的AKA ; 我讨厌Apple把它放在哪里.我真的想用控制来重新映射所有的vim命令而不是使用"命令",但是在Mac上看起来似乎不太可能,尽管我已经读过了.我已经读过我应该<Leader>
用来设置这样的映射,但我想避免重新<C>
映射我在.vimrc中可以找到或想到的每一个映射,只是为了忘记一些并膨胀我的.vimrc.
我想避免超出.vimrc范围的xmodmap或解决方案,因为我想保持我在系统间同步的配置文件的兼容性.
我真正想要做的是指定一个备用键(可能,
)作为相当于的修饰键<C>
.
我有一个matplotlib,我创建了button_press_event
这样的:
self.fig.canvas.mpl_connect('button_press_event', self.onClick)
def onClick(self, event)
if event.button == 1:
# draw some artists on left click
elif event.button == 2:
# draw a vertical line on the mouse x location on wheel click
elif event.button == 3:
# clear artists on right click
Run Code Online (Sandbox Code Playgroud)
现在可以将车轮点击处理程序修改为这样的东西
elif event.button == 2 or (event.button == 1 and event.key == "shift"):
# draw a vertical line on the mouse x location
# on wheel click or on shift+left click
# (alternative way …
Run Code Online (Sandbox Code Playgroud) 它发生在我所有的 WPF 应用程序中,并且 Visual Studio 2019(绝对基于 WPF)也表现出这种奇怪的行为:
只需在按住 Control 键的同时右键单击解决方案资源管理器中的一个项目,您应该注意到,如果您继续按住 Control 修饰符,突出显示的项目会间歇性地工作。
起初,我认为网格和列表控件仍在捕获用于项目选择的修饰键,但是这个问题也会出现在像标准按钮这样的简单控件上的上下文菜单中。
有没有办法修复这个故障?
这是一个带有 wpf 应用程序上下文菜单的 gif。首先我正常移动鼠标,然后Ctrl按住:
如您所见,它出现故障(未突出显示菜单项)。
modifier-key ×10
c# ×2
python ×2
autohotkey ×1
c ×1
cocoa ×1
contextmenu ×1
ctrl ×1
drivers ×1
greasemonkey ×1
javascript ×1
key ×1
keyboard ×1
keydown ×1
linux ×1
mappings ×1
matplotlib ×1
mouseevent ×1
nsevent ×1
objective-c ×1
pyqt ×1
pyqt4 ×1
pyqt5 ×1
shift ×1
tampermonkey ×1
vim ×1
windows ×1
windows-10 ×1
wpf ×1