LWJGL:在 getButtonCount returns 0 时检测 left/right 点击

LWJGL: detecting left/right clicks when getButtonCount returns 0

在 Dell Inspiron 15 3000 上,触摸板没有任何物理 left/right 按钮。相反,它是一个巨大的压力敏感触摸板。我假设它根据手在触控板上的位置检测到 right/left 次点击。

在我的 LWJGL 应用程序中,我使用 Mouse.isButtonDown(0) 检测鼠标按钮点击。这在带有物理按钮的鼠标的计算机上工作正常,但在缺少物理按钮的触摸板上不起作用。 Mouse.getButtonCount() returns 0

是否有人成功检测是否按下了鼠标按钮,用户是否应该使用没有物理按钮的触控板?

我认为,而不是使用

org.lwjgl.input.Mouse

这个 class 可能是您要搜索的内容:

org.lwjgl.input.Controllers

http://legacy.lwjgl.org/javadoc/org/lwjgl/input/Controllers.html

不过我不太确定,因为我只有鼠标,无法使用触摸板进行测试。

对于那些以后发现这个问题的人,我确实找到了修复方法:

你不能,如果没有物理按钮,使用Mouse.isButtonDown()方法。相反,您将不得不读取事件缓冲区。为此,我编写了自己的助手 class:

public class Mouse{

    private static boolean button_left = false, button_right = false;

    public static boolean isButtonDown(int button){
        if(button == 0) return button_left;
        if(button == 1) return button_right;
        return false;
    }

    public static void update(){
        while(org.lwjgl.input.Mouse.next()){
                if(org.lwjgl.input.Mouse.getEventButton() == 0) button_left = org.lwjgl.input.Mouse.getEventButtonState();
            if(org.lwjgl.input.Mouse.getEventButton() == 1) button_right = org.lwjgl.input.Mouse.getEventButtonState();
        }
    }
}

update() 方法在每次滴答时都会被调用,因此我可以使用 Mouse.isButtonDown(button).

获取按钮状态