标签: arrow-keys

箭头键事件未到达

基本上,我有一个带有自定义控件的表单(没有别的).自定义控件完全为空,表单将KeyPreview设置为true.

使用此设置,我没有收到任何箭头键或Tab的任何KeyDown事件.键盘上的其他每个键都有效.我有KeyDown事件处理程序连接到具有此类事件的所有内容,因此我确信我没有遗漏任何内容.

另外值得注意的是,如果我删除(完全空)自定义控件,我会得到箭头键事件.

这到底是怎么回事?

编辑:

我将此添加到窗体和控件中,但我仍然没有获得箭头键:

protected override void WndProc(ref Message m) {
    switch (m.Msg) {
        case 0x100: //WM_KEYDOWN
            //this is the control's version. In the form, it's this.Text
            ParentForm.Text = ((Keys)m.WParam).ToString();
            break;
    }
    base.WndProc(ref m);
}
Run Code Online (Sandbox Code Playgroud)

我还检查了Spy ++,并确定表单本身没有得到任何WM_KEYDOWN消息,它们都是控件.但是,也就是说,控件IS获取箭头键WM_KEYDOWN消息.叹.

编辑2:我还用这个版本更新了ZIP文件.请看看它,如果你想帮忙......

编辑3:

我已经想到了这一点.表格正在吃箭头键,可能是为了保持孩子们的注意力.事实证明,如果表格为空,我会收到事件.

无论如何,如果我将此代码添加到表单中,我会再次开始获取事件:

public override bool PreProcessMessage(ref Message msg) {
    switch (msg.Msg) {
        case 0x100: //WM_KEYDOWN
            return false;
    }
    return base.PreProcessMessage(ref msg);
}
Run Code Online (Sandbox Code Playgroud)

当我覆盖它时,表单没有机会完成它的脏工作,所以我得到了我期望的KeyDown事件.我认为这样做的副作用是我不能再使用我的键盘来导航表格(在这种情况下不是很大,因为它是一个游戏,这个练习的全部目的是实现键盘导航!)

如果有办法,问题仍然是关于如何"正确"禁用这个问题......

c# custom-controls arrow-keys winforms

6
推荐指数
1
解决办法
3135
查看次数

KeyDown识别左右方​​向箭头键,但不能上下

使用下面的代码,左箭头键和右箭头键按预期运行,但不识别向上和向下箭头(单步执行它,在适当的情况下满足前两个条件,但后两个条件永远不会):

private void textBox1_KeyDown(object sender, KeyEventArgs e) {
    TextBox tb = (TextBox)sender;

    if (e.KeyCode.Equals(Keys.Left)) {
        SetFocusOneColumnBack(tb.Name);
        e.Handled = true;
        return;
    }
    if (e.KeyCode.Equals(Keys.Right)) {
        SetFocusOneColumnForward(tb.Name);
        e.Handled = true;
        return;
    }
    if (e.KeyCode.Equals(Keys.Up)) {
        SetFocusOneRowUp(tb.Name);
        e.Handled = true;
        return;
    }
    if (e.KeyCode.Equals(Keys.Down)) {
        SetFocusOneRowDown(tb.Name);
        e.Handled = true;
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我该如何解决?

UPDATE

这是我在踩过e.Keycode时看到的内容.如果我按下

  • ...左箭头键,我看到: e.KeyCode = "LButton | MButton | Space"
  • ...右箭头键,我看到: e.KeyCode = "LButton | RButton | MButton | Space"
  • ......向上箭头键,我看到: e.KeyCode = "RButton | MButton | Space"
  • ...向下箭头键,我看到: e.KeyCode …

c# keycode keydown arrow-keys winforms

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

jdb中的文本导航无法在bash中工作

当我在bash中运行jdb时,箭头键会产生奇怪的垃圾:

up: ^[[A
down: ^[[B
left: ^[[D
right: ^[[C
Run Code Online (Sandbox Code Playgroud)

所以我不能使用命令历史记录,或纠正拼写错误,因为我根本无法导航文本,这非常烦人.这个问题有方法解决吗?

Java版本信息:

"1.6.0_24"                                                                             
OpenJDK Runtime Environment (IcedTea6 1.11.5) (fedora-68.1.11.5.fc16-x86_64)                        
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Run Code Online (Sandbox Code Playgroud)

Bash版本信息:

GNU bash, version 4.2.28(1)-release (x86_64-redhat-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

java debugging bash jdb arrow-keys

6
推荐指数
2
解决办法
1262
查看次数

在Visual Studio编辑器中按<ALT> + <ARROW_KEYS>写入单个ASCII字符

我使用VS2013作为我的IDE,自从我安装它以来,在按下ALT和任何箭头键时非常奇怪.我使用ALT + LEFT和ALT + RIGHT导航向前/向前导航,但是一旦VS完成跳转,它就会写出一个字符.

这是在跳跃之前:

在跳跃之前

这是在跳转后/按下ALT + LEFT之后: 跳后

这些是正在写的字符:

  • ALT + UP:◘
  • ALT +右:♠
  • ALT + DOWN:☻
  • ALT + LEFT:♦

我一直在使用VS2013工作,我以前从未见过这个.我知道按ALT + NUMPAD_KEYS产生ASCII字符,但为什么我的箭头键只发生在VS中呢?对我来说显然ALT + UP与按ALT + 6(http://www.irongeek.com/alt-numpad-ascii-key-combos-and-chart.html)相同.我实际上换掉了我的键盘,看看它是否与此有关.没有快乐.

有任何想法吗?

更新1:
看起来这个人有一个类似的问题,但在Windows上使用Eclipse:
https://superuser.com/questions/668394/turn-off-alt-numeric-keypad-ascii-symbol-insertion
可悲的是他的帖子没有答案.

更新2 /解决方案:

根据'Hans Passant'的评论,我找到了解决方案.请参阅下文了解详情.

ascii arrow-keys alt-key visual-studio-2013

6
推荐指数
1
解决办法
812
查看次数

React:如何使用箭头键转移焦点?(树视图)

我正在寻找允许使用箭头键将元素聚焦在树视图中的解决方案。

目前,我有 treeView (ul) 和 treeNode (li)。每个 treeNode 可能有自己的 treeView 等等。每个 treeNode 都有tabIndex="0"属性来添加使用Tab键在 treeView 中导航的可能性。它工作正常。但我想添加键盘箭头支持来做同样的事情。

知道如何做到这一点吗?PS 我不想使用任何 3rd 方库,除了纯 React、JS。

<section>
  <header>
    { title }
  </header>
  <ul>
    <li>
      <section>
        <header>
          { title }
        </header>
        <ul>
          // etc.
        </ul>
      </section>
    </li>
  </ul>
<section>
Run Code Online (Sandbox Code Playgroud)

javascript focus shift arrow-keys reactjs

6
推荐指数
1
解决办法
3528
查看次数

按向上箭头并显示最后一个 Java 控制台命令

目前我正在开发一个 Java 项目,该项目是控制台驱动的。我想实现一个功能,当用户在程序的命令行中按向上箭头时,命令行将显示用户运行的最后一个命令。

我发现了一些关于键盘事件的信息,如下所示,

public void keyPressed(KeyEvent evt);
public void keyReleased(KeyEvent evt);
public void keyTyped(KeyEvent evt);
Run Code Online (Sandbox Code Playgroud)

但是,我只是不知道如何将命令字符串带到命令行。例如,当用户按下“向上”时,该命令应该带回最后一个命令作为命令行上的预输入。

java console-application arrow-keys

5
推荐指数
1
解决办法
4048
查看次数

使用带有箭头键的键绑定

我正在创建一个使用箭头键移动精灵的游戏。我已经添加了箭头键和字母 n 的键绑定,但箭头键不起作用。这是我的代码:

public class MyPanel extends JPanel {

    Sprite sprite = new Sprite();

    Timer gameClock = new Timer(DELAY, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            sprite.move();
            // omit other methods
        }
    });

    // omit other member variables

    public MyPanel(){
        Abstract Action newGameAction = new AbstractAction("new game") {

            public void actionPerformed(ActionEvent e){
                doNewGame();
            }
        }

        setFocusable(true);

        addKeyBinding(new Pair<String, Action>("N", newGameAction));
        ArrayList<Pair<String, Action>> pairs = sprite.findKeyBindingPairs();
        for (Pair<String, Action> p : pairs)
            addKeyBindings(p);


        gameClock.start();

        // omit other panel init

    }

    private void …
Run Code Online (Sandbox Code Playgroud)

java swing key-bindings focusmanager arrow-keys

5
推荐指数
1
解决办法
3222
查看次数

如何使用 esc 键关闭灯箱页面叠加

我有一个关于灯箱的问题,请参阅我的 jsFiddle。单击其中一个图像会打开更大版本的绘画作为页面叠加。

如何使用ESC按键关闭此页面叠加层?

以及如何使用箭头键移动到下一个图像?

我需要什么样的 jQuery 插件 / javascript 才能做到这一点?

<ul class="lb-album">

                    <li>
                        <a href="#Fly-My-Pretties-Walled-Garden">
                            <img src="http://sandipa.com.au/images/works-for-sale/thumbs/Fly-my-Pretties-Walled-Garden-sm.jpg" alt="Fly My Pretties: Walled Garden">
                            <span>Fly My Pretties</span>                        </a>
          <div class="lb-overlay" id="Fly-My-Pretties-Walled-Garden">
                            <a href="#page" class="lb-close">x Close</a>
                            <img src="http://sandipa.com.au/images/2010-2011/1000px-wide/Fly-my-Pretties-Walled-Garden.jpg" alt="Fly My Pretties: Walled Garden">
                            <div>
                                <h3>Fly My Pretties: Walled Garden<span>mixed media on canvas</span></h3>
                                <p>72 x 137 cm</p>
                                <a href="#Light-that-Shapes-the-Shadows" class="lb-prev">Prev</a>
                                <a href="#Central-Highlands-Circle-of-Gold" class="lb-next">Next</a>                            
                            </div>
                        </div>
                    </li>

<li>
                        <a href="#Central-Highlands-Circle-of-Gold">
                            <img src="http://sandipa.com.au/images/works-for-sale/thumbs/Central-Highlands-Circle-of-Gold-sm.jpg" alt="Central Highlands: Circle of Gold">
                            <span>Circle of Gold</span>                     </a> …
Run Code Online (Sandbox Code Playgroud)

lightbox arrow-keys

5
推荐指数
1
解决办法
1946
查看次数

在WebView Google电视应用上处理来自D-pad的箭头键

我已经构建了一个在WebView中加载html页面的Android应用程序,它工作正常,除了在D-pad箭头键上发生操作的事实不起作用.如果我用其他键改变箭头的动作,它就可以了.在Web浏览器中加载html页面工作正常,PC键盘箭头键返回正确的操作,但在Android WebView中,D-pad箭头键不起作用.

这就是我在js中按下虎键的方式:

window.addEventListener('keydown', keyDownHandler, true);
function keyDownHandler(evt){
var keyCode=evt.keyCode;
alert(keyCode);
}
Run Code Online (Sandbox Code Playgroud)

除箭头键外,按任何其他键将返回键码,但箭头不会.

这可能是重复的,如:android WebView:在JavaScript中处理箭头键但没有找到工作的解决方案.

有什么方法可以在Android WebView中获得D-pad箭头键代码?

android webview arrow-keys

5
推荐指数
1
解决办法
4916
查看次数

在bash vi输入模式下修复<右箭头>.无法输入超出最后一个字符

我正在尝试在bash中使用vi模式.通过.inputrc(在OSX上):

set editing-mode vi
Run Code Online (Sandbox Code Playgroud)

在vi插入模式下,右箭头键将光标向右移动,但它在行中的最后一个字符处停止.如果光标超过了行的末尾,则将光标移动到左侧.所以,总而言之,你可以去的最右边是行中的最后一个字符.

$ cd /usr/locl/bin
# Move the cursor to the middle of the line, and fix something there
$ cd /usr/local/bin
# Now move the cursor back to the end, and write a character (/)
$ cd /usr/local/bi/n
Run Code Online (Sandbox Code Playgroud)

如上所示,这意味着您无法在不进入命令模式(并使用"a")的情况下编辑行尾.

我发现一篇文章似乎表明readline/bash的版本可能是问题所在.但是我使用brew来升级bash(GNU bash,版本4.3.42),甚至尝试安装和链接readline(6.3.8),正如该站点所推荐的那样.但没有运气.升级可能不正确.

这意味着我正在寻找以下其中一项:

  • 在OSX终端中升级bash和readline的正确方法
  • 一种检查OSX实际使用的bash/readline版本的方法
  • 这个bug的另一个修复(以某种方式传递inputrc中的virtualedit = onemore选项)
  • 最新版本的readline可能重新引入了错误和解决方案的迹象.
  • 另外:如果与editrc有类似的东西

注意:我希望在bash中使readline与默认值相同(对于其他定期使用我的终端的人),但允许我使用vim模式.这意味着我不需要解决方法,而是需要修复.

vi macos bash readline arrow-keys

5
推荐指数
1
解决办法
539
查看次数