GUI 小部件如何区分触摸板事件的语义方向和绝对方向?

GUI 小部件如何区分触摸板事件的语义方向和绝对方向?

我最近在 Wayland 上尝试使用 Ubuntu 20.10 和 Gnome 桌面,使用支持精确滚动的触摸板,即不模拟鼠标滚轮

启用后自然滚动对于触摸板,我用手指做出的滚动手势会自然地映射到屏幕上所有可滚动内容的移动(向上移动手指会向上移动内容)。这与将物理手势映射到“滚动条拇指”(手柄)的运动相反,在“滚动条拇指”(手柄)的运动中,向上移动手指将使拇指向上移动,但内容向下移动。

然而,当鼠标悬停在 GUI 元素上时明确的映射从物理运动到视觉运动,例如系统的音量滑块,手势和小部件运动之间的映射令人惊讶地被打破。换句话说,向上的手势会导致滑块手柄向下调整(让我们忽略滑块是水平的——如果它是垂直的,它无疑会向下移动)。显然,该小部件使用了错误的抽象来确定其移动方向。

快速概览(精确滚动)

在这篇文章中,我重点关注现代触摸板的精确滚动事件,因为我的印象是这是最现代的滚动 API。

  • 自然滚动
    • 身体运动:向下
      • 可滚动的内容移动:向下(匹配)
      • 滑块运动:向上(不匹配)
  • “正常”滚动
    • 身体运动:向下
      • 滚动条“拇指”移动:向下(匹配)
      • 滑块运动:向下(匹配)

如前所述,滑块的运动和手势运动之间有明确的映射,但仍然会做错误的事情。 (这是明确的,因为滑块只有一个移动部分,而不是可滚动视图有两个移动部分:内容和滚动条拇指)

你能给我解释一下吗如何像这样的小部件可以确定正确的手势方向,而不是像目前那样使用错误的抽象?如何获得绝对运动方向?为什么它不是已经这样做了吗?

在这种情况下,我不是作为开发人员来询问,而是作为对交互设计和这个问题感兴趣的人来询问。在所有不包含滚动条的小部件中使用绝对移动方向似乎是一件简单的事情,因为没有歧义。我目前不太熟悉各种 Linux 桌面环境中事件处理的复杂性。

相关内容