Mac OS X触控板水平滚动可激活Shift Mask

时间:2013-04-24 07:44:15

标签: java macos horizontal-scrolling trackpad

我在OS X上使用 Magic Trackpad 检测到一些Java软件的奇怪行为。我可以发现,当一个水平的"双指"执行滚动时,MouseWheelEvent的修饰符常量设置为1,这相当于InputEvent.SHIFT_MASK,从而使应用程序的行为就像用户按下了SHIFT一样。

如何区分Magic Trackpad上的水平滚动和普通的SHIFT +鼠标滚轮?使用InputEvent.SHIFT_DOWN_MASK显然会完全停用SHIFT的检测。

以下是一个代码段,其行为如上所述:

@Override
public void mouseWheelMoved(@NotNull MouseWheelEvent e) {
    int unitsToScroll = e.getUnitsToScroll();

    int modifiers = e.getModifiers();
    boolean shiftDown = ((modifiers & InputEvent.SHIFT_MASK) != 0);
    boolean ctrlDown = ((modifiers & InputEvent.CTRL_MASK) != 0);
    [...]
}

这让我很难解决..感谢您的帮助 - 非常感谢

1 个答案:

答案 0 :(得分:0)

从我的测试中看来,如果在滑动过程中你的两个手指的距离发生了变化(一种类似于手术的操作),那么移位键面板将会设置。如果你的手指可以保持严格相同的距离,那么切换键面罩将永远不会被设置。