我正在使用Delphi 2009,我在delphi.about.com上学习了一些教程,但我无法设置它.
我创建了一个OnKeyPress/OnkeyDown事件,并设置一个断点来查看是否调用了该事件,但是没有以任何方式调用它.
问题出在哪儿?
编辑:
procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Beep; //breakpoint is set here.
end;
Run Code Online (Sandbox Code Playgroud) 我在Python中遇到了问题.
我正在使用Tkinter并且有四个绑定事件,它们会在我的表单上按下按键.我的问题是,这些不是异步运行的.因此,例如,我可以按一个按钮,并识别事件.但是,当我同时按住两个键时,只有一个事件被触发.
有没有其他方法可以做到这一点?
self.f.bind("w", self.player1Up)
self.f.bind("s", self.player1Down)
self.f.bind("o", self.player2Up)
self.f.bind("l", self.player2Down)
Run Code Online (Sandbox Code Playgroud) 是否可以禁用控件的键盘输入?比如一个ListView?我怎么做?我试过压倒KeyUp KeyDown事件,但显然不是这样的?
IsEnabled 是一个很好的解决方案,但我只希望禁用键盘交互并保持鼠标交互不变.
我正在用Java编写游戏,现在它是Swing + JOGL - 一个带有GLCanvas的JFrame.
我使用keyPressed等事件(jframe.addKeyListener(...))处理输入,它似乎无法正常工作:
我究竟做错了什么?
有没有更好的方法来处理Java中的键盘输入?
(我宁愿不切换到另一个库,比如LWJGL ......除非我别无选择).
想知道如何在netbeans中将键盘键链接到JButton,从oracle下载KeyEventDemo程序,让你按一个键,它告诉你键码,现在我想知道如何实现它,在计算器项目上工作,我已经具备了这个能力点击任何按钮,有它要么+,-,/,*或enter所以现在我想知道如何到2链接在一起,基本上我试图找出如何检查被压的方法,其关键,然后运行的方法取决于他们按下了什么!谢谢你的任何信息!
java swing keyboard-shortcuts actionlistener keyboard-events
我正在尝试执行以下操作之一1.打开所需程序并以编程方式按键2.找到程序打开窗口并以编程方式按键(或者很好)
我尝试了很多SendKeys.SendWait(),PostMessage()和SendMessage()的实现失败.以下是我的代码片段
//included all these for attempts
[DllImport("User32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr hWnd);
[DllImport("User32.Dll", EntryPoint = "PostMessageA")]
static extern bool PostMessage(IntPtr hWnd, uint msg, int wParam, int lParam);
[DllImport("user32.dll")]
static extern byte VkKeyScan(char ch);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
Run Code Online (Sandbox Code Playgroud)
获取sendmessage/postmessage/sendkeys使用的窗口,变量的句柄
IntPtr ptrOBS = proc.Handle;//this works properly, proc is instantiated properly
//IntPtr ptrOBS = FindWindow(null, "Open Broadcaster Software v0.472b");
SetForegroundWindow(ptrOBS);
const UInt32 WM_CHAR …Run Code Online (Sandbox Code Playgroud) MSDN声明keybd_event已被SendInput取代.在重写期间,我切换到使用SendInput ... 除了尝试发送Alt-key组合时,这很好.在Win7 64位系统上(尚未在其他地方尝试过),在目标应用程序中显示击键之前,发送Alt键会导致长时间延迟.
有什么想法吗?或者我做错了什么?现在,我已经回到了keybd_event - 下面的第二个版本.
//Keyboard input from this version appears only after a ~4-5 second
//time lag...
procedure SendAltM;
var
KeyInputs: array of TInput;
KeyInputCount: Integer;
//--------------------------------------------
procedure KeybdInput(VKey: Byte; Flags: DWORD);
begin
Inc(KeyInputCount);
SetLength(KeyInputs, KeyInputCount);
KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD;
with KeyInputs[KeyInputCount - 1].ki do
begin
wVk := VKey;
wScan := MapVirtualKey(wVk, 0);
dwFlags := KEYEVENTF_EXTENDEDKEY;
dwFlags := Flags or dwFlags;
time := 0;
dwExtraInfo := 0;
end;
end;
begin
KeybdInput(VK_MENU, 0); // Alt
KeybdInput(Ord('M'), …Run Code Online (Sandbox Code Playgroud) 当我用qwerty键盘绑定?和/键时javascript,他们有相同的
keycode (191)但你必须按下shift来做一个?.
如何判断在azerty键盘上按下了哪个字符(如下所示的布局),因为它们是不同的键,两者都需要Shift,并且我为它们获得相同的键码keyup.:
$(document).keyup(function(event) {
if (event.which === 191) {
action();
}
});
Run Code Online (Sandbox Code Playgroud)

(原始图像是"KB France"由Yitscar(英语维基百科)Michka B(法语维基百科)通过Wikimedia Commons在知识共享署名 - 相同方式共享3.0下获得许可 - 请参阅上面链接的文章中使用.)
我的页面中有一个可滚动的DIV,而页面上没有其他元素.(页面布局固定在DIV本身上方和下方的控件上.)我希望箭头键和页面向上/向下翻页以在所有情况下滚动DIV,但除非DIV实际上具有焦点,否则我似乎无法这样做.其他DIV中还有其他输入字段,通常具有焦点.我已经尝试在文档级捕获箭头键和页面/向上/向下'keydown'事件并直接模拟相同的事件(使用此问题的答案)到需要滚动的DIV,但不会发生滚动.我知道正在调度该事件,因为如果我附加一个事件处理程序,我会看到它,但由于某种原因它不会导致任何滚动.我也试过设置DIV的"tabIndex"属性没有区别.
如何指定特定元素来接收这样的特定键?当某些键只能对页面上的单个元素有意义时,要求特定元素专注于某些键才能工作,这对用户来说是非常不友好的.不得不经常将焦点从另一个元素切换到可滚动区域以滚动和返回以输入数据.
我已经看到了可以通过其他方式模拟滚动的建议,但我想避免使用该路由,因为这并不总是产生相同的结果,并且我还希望将其推广到除滚动之外的其他类型的关键事件和动作.
使用Tab键完成焦点时,我正在尝试选择所有文本。但是我找不到正确的解决方案。现在,我正在使用GotFocusEvent,但是现在当我用鼠标单击时,它将引发该事件。
我现在使用的代码是:
EventManager.RegisterClassHandler(typeof(System.Windows.Controls.TextBox), System.Windows.Controls.TextBox.GotKeyboardFocusEvent, new RoutedEventHandler(SelectAllText));
void SelectAllText(object sender, RoutedEventArgs e)
{
var textBox = sender as System.Windows.Controls.TextBox;
if (textBox != null)
if (!textBox.IsReadOnly)
textBox.SelectAll();
}
Run Code Online (Sandbox Code Playgroud) keyboard-events ×10
c# ×3
.net ×2
delphi ×2
java ×2
javascript ×2
wpf ×2
bind ×1
delphi-2009 ×1
dom-events ×1
keycode ×1
python ×1
scroll ×1
sendinput ×1
sendkeys ×1
swing ×1
tkinter ×1
windows ×1
wpf-textbox ×1