我正在寻找一种模拟OSX中击键的方法.我使用Objective-C 找到了另一个解决方案(模拟系统范围热键的按键),但我需要使用Swift.我怎样才能适应CGEventCreateKeyboardEvent?
例如,为什么当我在 chrome 浏览器中时,当我想使用 Shift+Ctrl+E 组合键居中文本时,会导致出现 e\xcc\xb2 ,如果我输入 e\xcc\xb2j\xcc\xb2o\xcc\xb2y\ xcc\xb2 并按键盘上的 Enter 会导致出现 emoji 。\n我怎样才能简单地修复它?
\n问题:如何主动检查是否按下了某个(装饰)键,例如CTRL或SHIFT,例如:
if (SomeKeyboardRelatedService.isControlPressed()) {...}
Run Code Online (Sandbox Code Playgroud)
我想检查当用户单击鼠标时是否按下了某个(装饰)键。我们无法主动去做。相反,我们正在使用RawKeyboardListener并记住isControlPressedinonKey事件。这样,稍后GestureDetector.onTap我们就可以检查是否isControlPressed为true。问题是:
我们阅读了相关文档,并用几个关键词进行了搜索,但最终没有结果。
一般来说,实施一种作弊码的最佳方法是什么?我有WinForms应用程序,其中一个作弊代码可以解锁一个复活节彩蛋,但实现细节是不相关的.
我想到的最好的方法是保留每个代码的索引 - 让我们在一个虚构的C#应用程序中考虑着名的DOOM代码 - IDDQD和IDKFA.
string[] CheatCodes = { "IDDQD", "IDKFA"};
int[] CheatIndexes = { 0, 0 };
const int CHEAT_COUNT = 2;
void KeyPress(char c)
{
for (int i = 0; i < CHEAT_COUNT; i++) //for each cheat code
{
if (CheatCodes[i][CheatIndexes[i]] == c)
{ //we have hit the next key in sequence
if (++CheatIndexes[i] == CheatCodes[i].Length) //are we in the end?
{
//Do cheat work
MessageBox.Show(CheatCodes[i]);
//reset cheat index so we can enter it next time
CheatIndexes[i] …Run Code Online (Sandbox Code Playgroud) 在窗口形式中,我做了一个按钮,我试图将它发送F1到特定窗口(例如FireFox,我的电脑等......)
我的问题是:
我正在寻找一种语言或图书馆,以便我可以在最大程度上模拟击键,而无需用力按键.
(我对击键程度的具体测量是当我的计算机已经运行了关键监听器(例如MouseKeys和StickyKeys)时,它是否会产生与物理按键相同的输出).
我尝试过很多键击仿真方法; Java AWT库,Java win32api,python win32com sendKeys,python ctypes按键,以及更多用于python和Java的库,但它们都没有模拟与实际硬件足够接近的关键笔划.
(当Windows MouseKeys处于活动状态时,发送冒号,半冒号或小键盘ADD键的键击只会产生这些字符,而物理按键执行鼠标键单击时)
我相信这些方法必须涉及将笔画直接发送到应用程序,而不是仅将它们传递给操作系统.
我想到这些高级(以上操作系统代码)级语言的库不会产生足够的东西.我担心我可能不得不屈服于某种BIOS编程.
有没有人对此事有任何有用的信息?
如何在低级语言中模拟按键?
我应该寻找特定于硬件的解决方案(某种富士通硬件API)吗?
我几乎觉得将机器人编程为简单地坐在硬件旁并按下按键会更容易.
谢谢!
我正在使用node.js v4.5
我写了下面的函数来发送延迟的重复消息.
function send_messages() {
Promise.resolve()
.then(() => send_msg() )
.then(() => Delay(1000) )
.then(() => send_msg() )
.then(() => Delay(1000))
.then(() => send_msg() )
;
}
function Delay(duration) {
return new Promise((resolve) => {
setTimeout(() => resolve(), duration);
});
}
Run Code Online (Sandbox Code Playgroud)
我希望使用按键激活发送消息,而不是延迟.类似下面的功能.
function send_messages_keystroke() {
Promise.resolve()
.then(() => send_msg() )
.then(() => keyPress('ctrl-b') ) //Run subsequent line of code send_msg() if keystroke ctrl-b is pressed
.then(() => send_msg() )
.then(() => keyPress('ctrl-b') )
.then(() => send_msg() )
;
}
Run Code Online (Sandbox Code Playgroud) 在下面的程序中,为什么在击中+时a按键打印"你好,世界"不?CTRLa
import java.awt.event.*;
import javax.swing.*;
public class KeyStrokeTest {
public static void main(String[] args) {
JPanel panel = new JPanel();
/* add a new action named "foo" to the panel's action map */
panel.getActionMap().put("foo", new AbstractAction() {
public void actionPerformed(ActionEvent e) {
System.out.println("hello, world");
}
});
/* connect two keystrokes with the newly created "foo" action:
- a
- CTRL-a
*/
InputMap inputMap = panel.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), 0), "foo");
inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), InputEvent.CTRL_DOWN_MASK), "foo");
/* display the …Run Code Online (Sandbox Code Playgroud) 不确定我是否应该将它放在stackoverflow或unix.stackexchange上,但我在这里发现了一些类似的 问题,所以这里就是这样.
我正在尝试创建一个由.bashrc调用的脚本,它允许我根据单个击键选择两个选项中的一个.这通常不会很难但我希望对应于这两个选项的两个键是空格并输入.
这是我到目前为止所得到的:
#!/bin/bash
SELECT=""
while [[ "$SELECT" != $'\x0a' && "$SELECT" != $'\x20' ]]; do
echo "Select session type:"
echo "Press <Enter> to do foo"
echo "Press <Space> to do bar"
read -s -N 1 SELECT
echo "Debug/$SELECT/${#SELECT}"
[[ "$SELECT" == $'\x0a' ]] && echo "enter" # do foo
[[ "$SELECT" == $'\x20' ]] && echo "space" # do bar
done
Run Code Online (Sandbox Code Playgroud)
如果我按下enter,space,backspace和x,我得到的是以下输出:
:~$ bin/sessionSelect.sh
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> …Run Code Online (Sandbox Code Playgroud) Powershell 可以监听并捕获按键吗?
是否可以编写一个 PowerShell 脚本,就像AutoHotkey一样,位于托盘中并等待您按下预定义的键盘键才开始执行?并且每次按下所述键时可能不会返回而是触发?
我想要实现的是 - 仅在启动脚本后按下按钮才执行预定义的脚本操作,因此将其放在桌面上并定义快捷键是行不通的。
例如:
我希望每次按“x”键时输入 3 次文本“TEST”,但我希望仅当执行此操作的脚本正在运行时才会发生这种情况。因此,当脚本未运行时 - 按“x”不会执行任何操作。
基本上,AutoHotkey 可以完全做到这一点,但如果可能的话,我想在 PowerShell 中执行此操作,而无需编写大量 C# 代码,因为那样我只需为此编写一个小型 C# 托盘应用程序。