标签: keyboard-events

PyGame在同时按下3+键时不接收事件

我在PyGame开发一款简单的游戏......一架飞来飞去的火箭飞船.


问题:为什么pygame会在同时按下键时停止发出键盘事件?

关于密钥处理:该程序有许多变量,如KEYSTATE_FIRE, KEYSTATE_TURNLEFT等...

  1. 当一个KEYDOWN事件被处理时,它设置对应的KEYSTATE_*变量为True.
  2. 当一个KEYUP事件被处理,它设置相同的变量设置为false.

问题: 如果UP-ARROWLEFT-ARROW同时按下,pygame KEYDOWNSPACE按下时不会发出事件.此行为因密钥而异.当按下字母时,似乎在pygame停止发出KEYDOWN附加键的事件之前,我可以容纳其中的大约5个.

验证:在我的主循环中,我只是打印收到的每个事件以验证上述行为.

代码:作为参考,这里是处理关键事件的(粗略)方式:

while GAME_RUNNING:
    FRAME_NUMBER += 1
    CLOCK.tick(FRAME_PER_SECOND)

    #----------------------------------------------------------------------
    # Check for events
    for event in pygame.event.get():
        print event

        if event.type == pygame.QUIT:
            raise SystemExit()

        elif event.type == pygame.KEYDOWN and event.dict['key'] == pygame.K_UP:
            KEYSTATE_FORWARD = True
        elif event.type == pygame.KEYUP and event.dict['key'] == pygame.K_UP:
            KEYSTATE_FORWARD = False

        elif …
Run Code Online (Sandbox Code Playgroud)

python pygame keyboard-events

3
推荐指数
2
解决办法
4022
查看次数

移动焦点以响应XAML中的键盘事件

我有一个带有两个文本框的WPF视图.当用户像Tab一样击中键盘上的向下箭头时,我想自动将焦点从第一个文本框向前移动到第二个文本框.

似乎我应该能够100%声明地执行此操作,但出于某种原因,我认为这样做的命令似乎没有做任何事情.这是我的第一次尝试不起作用:

<StackPanel>
    <TextBox Text="Test">
        <TextBox.InputBindings>
            <!-- I realize ComponentCommands.MoveFocusDown doesn't work...
                 This is just an example of what I've tried and the type
                 of answer I'm looking for -->
            <KeyBinding Key="Down" Command="ComponentCommands.MoveFocusDown" />
        </TextBox.InputBindings>
    </TextBox>
    <TextBox></TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

有人对这个有经验么?好像我应该能够使用InputBindings或EventTrigger来做到这一点.

我正在使用MVVM,这是一个View问题.我可以放弃一点代码隐藏(作为一个视图关注,这是合理的),但它只是感觉我错过了一些东西.

wpf xaml focus keyboard-events

3
推荐指数
1
解决办法
3823
查看次数

如何在iPhone(iOS)上的硬件键盘上检测键盘事件

我有一个带有登录页面的应用程序,该页面包含三个不同随机字符的字段.当用户离开最后一个字段时,软键盘消失,用户可以触摸屏幕上的"登录"按钮.

当连接了硬件键盘(蓝牙或物理)时,我希望能够点击"输入".但是因为用户不在某个字段中,所以我看不到如何检测被按下的键.

有人会就哪个班级处理重要新闻事件提出建议吗?据推测,我可以使用一个代表来接收这些代理但我通过SDK搜索没有找到任何内容.

谢谢

iphone objective-c keyboard-events ios

3
推荐指数
1
解决办法
6033
查看次数

键盘事件

click当按下某个键盘按钮时,如何调用链接事件?

我想在+/+ 上调用下一页/上一页CtrlCtrl

keyboard jquery keyboard-shortcuts keyboard-events

3
推荐指数
1
解决办法
724
查看次数

捕获关键笔划以在自定义控件内手动绘制项目?

这个问题与我最近在这里提出的另一个问题有关,但更具体地说明我需要什么,而不是我的上一个问题,因为前一个问题我不确定如何解释甚至我想做什么.

我有一个我正在构建的自定义控件,它看起来(并且最终会起作用)类似于Windows的任务栏的工作方式.它在最左侧有一个主菜单按钮,并在控件内部设置了动态数量的其他按钮.它可以被视为某种列表控件,只需一个额外的按钮(菜单).菜单按钮我认为索引为-1,第一个动态按钮的索引为0.

说实话,我面临的问题有三个(如下所示),而这些问题都是因为我从来没有写过这个先进的控件.

  1. 引入击键(捕捉键盘消息)让用户浏览此控件中的项目 - 按键消息处理程序永远不会触发.
  2. 由于我将捕获Tab键并使用它来导航我的控件中的项目,如何在用户到达结束时将焦点传递给我的控件的父级的下一个/最后一个控件(按Tab键顺序)(或者如果使用Shift + Tab键)?
  3. 就像我说的那样,我以前从未使用过这种先进的控制器,我想确保我的起步很好.您是否在我的代码中看到需要进行的其他修复?万一你碰巧在我的代码中看到了一些时髦的东西.

我以为我会问所有3个问题,因为它们都与我在下面发布的同一个单元有关...

组件TJDTaskbar

unit JDTaskbar;

interface

uses
  Classes, Windows, SysUtils, Controls, StdCtrls, ExtCtrls, StrUtils,
  Graphics, Forms, Messages;

type
  TJDTaskbar = class;
  TJDTaskbarItem = class;
  TJDTaskbarItems = class;

  TJDTaskHandle = Integer;  //Future use
  TFocusIndex = -1..MaxInt; //Range of possible indexes in list

  //Mimics the Windows taskbar for managing forms in an application
  //Main component
  TJDTaskbar = class(TCustomControl)
  private
    FButtonColor: TColor;
    FItems: TJDTaskbarItems;
    FButtonHover: TColor;
    FButtonWidth: Integer;
    FButtonText: TCaption;
    FButtonCaption: TCaption; …
Run Code Online (Sandbox Code Playgroud)

delphi focus custom-controls delphi-7 keyboard-events

3
推荐指数
1
解决办法
802
查看次数

在EXT JS应用程序搜索文本框中添加了一个输入事件以触发搜索

嗨我有下面的代码,我的输入事件永远不会触发,任何帮助将不胜感激.

    items: [{
            xtype: 'textfield',
            id: 'idhere',
            name: 'namehere',
            fieldLabel: 'lablehere:',
            width: 500,
            handler: {
                  key:13,
                  fn : function () {
                  if (e.getKey() == e.ENTER) {
                           alert("You pressed an enter button in text field.");
    }
                  }

            }
        },{
            xtype: 'button',
            text: 'texttodisplay',
            handler: function() {
                                  //my function.
            }

        }]
Run Code Online (Sandbox Code Playgroud)

我实际上通过使用:

listeners:  {
                specialkey: function (f,e) {    
                     if (e.getKey() == e.ENTER) {
                        loadData();
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

javascript extjs enter keyboard-events

3
推荐指数
1
解决办法
7050
查看次数

将密钥转换为VirtualKeyCode

在我的C#/ WPF/.NET 4.5应用程序中,我试图通过KeyEventHandler捕获按键,然后使用优秀的Windows输入模拟器来模拟按键(将手势,语音等命令映射到键盘).

麻烦的是,我得到的成员Key枚举从KeyEventHandlerRoutedEventArgs,但后来我需要通过一个VirtualKeyCodeSimulateKeyPress().

如何从去KeyVirtualKeyCode

// Trigger reader
private void Editor_CommandButton_Click(object sender, RoutedEventArgs e) {
  PressKeyModal.Visibility = System.Windows.Visibility.Visible;
  AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)Editor_HandleKeyDownEvent);
}
// Read key press from keyboard
private void Editor_HandleKeyDownEvent(object sender, KeyEventArgs e) {
  // Here is the culprit
  VirtualKeyCode CodeOfKeyToEmulate = ConvertSomehow(e.Key);
  // /culprit
  PressKeyModal.Visibility = System.Windows.Visibility.Hidden;
  RemoveHandler(Keyboard.KeyDownEvent, (KeyEventHandler)Editor_HandleKeyDownEvent);
}

// Later, emulate the key press
private void EmulateKeyPress(VirtualKeyCode codeOfKeyToEmulate( {
  InputSimulator.SimulateKeyPress(codeOfKeyToEmulate);
}
Run Code Online (Sandbox Code Playgroud)

c# wpf keyboard-events .net-4.5

3
推荐指数
1
解决办法
2203
查看次数

使用Haskell处理关节按键

在Haskell中编写程序,我正在努力处理ctrl-s和ctrl-l形式的按键操作

我使用以下代码:

main :: IO ()
main = do
  hSetBuffering stdin NoBuffering
  x <- getChar
  putStrLn ("You pressed: " ++ [x])
Run Code Online (Sandbox Code Playgroud)

如何识别按下的Ctrl按钮?

haskell keyboard-events

3
推荐指数
1
解决办法
888
查看次数

没有标题栏无法捕获键盘

我正在尝试使用spriteKit构建动画,并且可以通过键盘进行控制(箭头键可以加快,减速和倒带动画)。

我还需要此应用程序具有完全透明的背景,这是我使用以下方法管理的:

scene?.backgroundColor = NSColor.clearColor()
Run Code Online (Sandbox Code Playgroud)

以及 :

self.window.opaque = false
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切正常,我可以控制动画。但是,一旦我尝试通过取消选中右侧面板上的窗口框来删除Interface Builder中的标题栏,键盘捕获就会停止工作。

keyDown:不再被调用,当您的Mac告诉您键盘输入不再是一种选择时,我得到了“叮当”的声音特征。即使我在菜单栏中仍然有我的应用程序的名称。

标题关闭时,还有什么方法可以继续接收键盘输入?

macos cocoa keyboard-events sprite-kit swift

3
推荐指数
1
解决办法
297
查看次数

在CTRL + MOUSEWHEEL事件

我被要求为我们的页面网站实现ctrl + mousewheel事件,以便在用户放大或缩小时更改图像偏移.我发现这个旧答案使用javascript覆盖浏览器CTRL +(WHEEL)SCROLL,我试图做同样的事情.我为实现下载了jQuery Mouse Wheel插件,这是我的代码:

var isCtrl = false;  
       $(document).on('keydown keyup', function(e) {
            if (e.which === 17) {
                isCtrl = e.type === 'keydown' ? true : false;
            }
        }).on('mousewheel', function(e, delta) { // `delta` will be the distance that the page would have scrolled;
            // might be useful for increasing the SVG size, might not
            if (isCtrl) {
                e.preventDefault();
                alert('wheel');
            }
        });
Run Code Online (Sandbox Code Playgroud)

事件可以单独运行,但如果我按住CTRL按钮并转动鼠标,则轮子事件不会触发.有没有人有更好的解决方案,或者我做错了什么?感谢帮助

javascript jquery mouseevent keyboard-events jquery-events

3
推荐指数
2
解决办法
6389
查看次数