标签: keyboard-events

为什么我的表单的OnKeyDown事件处理程序不会触发?

我正在使用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)

delphi delphi-2009 keyboard-events

4
推荐指数
1
解决办法
6211
查看次数

Python绑定 - 允许同时按下多个键

我在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)

python bind tkinter keyboard-events

4
推荐指数
1
解决办法
7775
查看次数

我可以禁用特定控件的键盘输入吗?

是否可以禁用控件的键盘输入?比如一个ListView?我怎么做?我试过压倒KeyUp KeyDown事件,但显然不是这样的?

IsEnabled 是一个很好的解决方案,但我只希望禁用键盘交互并保持鼠标交互不变.

c# wpf keyboard-events

4
推荐指数
2
解决办法
2万
查看次数

用Java编写游戏的键盘输入

我正在用Java编写游戏,现在它是Swing + JOGL - 一个带有GLCanvas的JFrame.

我使用keyPressed等事件(jframe.addKeyListener(...))处理输入,它似乎无法正常工作:

  • 当我同时关闭3个键时,它们没有正确注册 - 显然这是键盘故障,我必须找到另一个控制方案.
  • 窗口丢失后,重新获得焦点,输入完全停止工作......

我究竟做错了什么?

有没有更好的方法来处理Java中的键盘输入?

(我宁愿不切换到另一个库,比如LWJGL ......除非我别无选择).

java keyboard-events

4
推荐指数
1
解决办法
2万
查看次数

键盘快捷键和动作侦听器

想知道如何在netbeans中将键盘键链接到JButton,从oracle下载KeyEventDemo程序,让你按一个键,它告诉你键码,现在我想知道如何实现它,在计算器项目上工作,我已经具备了这个能力点击任何按钮,有它要么+,-,/,*enter所以现在我想知道如何到2链接在一起,基本上我试图找出如何检查被压的方法,其关键,然后运行的方法取决于他们按下了什么!谢谢你的任何信息!

java swing keyboard-shortcuts actionlistener keyboard-events

4
推荐指数
1
解决办法
5550
查看次数

在c#中将键击发送到应用程序(sendkeys,postmessage,sendmessage都不起作用)

我正在尝试执行以下操作之一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)

.net c# windows sendkeys keyboard-events

4
推荐指数
2
解决办法
2万
查看次数

SendInput与keybd_event

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)

delphi keyboard-events sendinput

4
推荐指数
1
解决办法
1万
查看次数

如何区分问号?和/用于azerty键盘

当我用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下获得许可 - 请参阅上面链接的文章中使用.)

javascript keyboard-shortcuts keycode keyboard-events

4
推荐指数
1
解决办法
1904
查看次数

使滚动键滚动正确的页面元素

我的页面中有一个可滚动的DIV,而页面上没有其他元素.(页面布局固定在DIV本身上方和下方的控件上.)我希望箭头键和页面向上/向下翻页以在所有情况下滚动DIV,但除非DIV实际上具有焦点,否则我似乎无法这样做.其他DIV中还有其他输入字段,通常具有焦点.我已经尝试在文档级捕获箭头键和页面/向上/向下'keydown'事件并直接模拟相同的事件(使用此问题的答案)到需要滚动的DIV,但不会发生滚动.我知道正在调度该事件,因为如果我附加一个事件处理程序,我会看到它,但由于某种原因它不会导致任何滚动.我也试过设置DIV的"tabIndex"属性没有区别.

如何指定特定元素来接收这样的特定键?当某些键只能对页面上的单个元素有意义时,要求特定元素专注于某些键才能工作,这对用户来说是非常不友好的.不得不经常将焦点从另一个元素切换到可滚动区域以滚动和返回以输入数据.

我已经看到了可以通过其他方式模拟滚动的建议,但我想避免使用该路由,因为这并不总是产生相同的结果,并且我还希望将其推广到除滚动之外的其他类型的关键事件和动作.

javascript scroll keyboard-events dom-events

4
推荐指数
1
解决办法
996
查看次数

WPF TextBox在Tab焦点上全选

使用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)

.net c# wpf keyboard-events wpf-textbox

4
推荐指数
1
解决办法
4341
查看次数