UKUI动态

麒麟虚拟键盘成长小记

2023-09-06 10:09:50

1 前言

openKylin作为一个桌面操作系统根社区,一直在努力为 Linux 开源技术及其软硬件生态繁荣发展做出贡献。为了解决Linux系统上缺少较好的可用虚拟键盘输入法的问题,输入法SIG和fcitx社区进行密切合作。2022年下半年,在双方共同的努力下,经过两个月左右的紧张开发,fcitx5 dev版首次实现了对虚拟键盘的支持,解决了fcitx5输入法框架不能支持虚拟键盘输入的问题!这就使得基于fcitx5开发虚拟键盘输入法成为可能!
在此基础之上,输入法SIG成功开发了支持fcitx5虚拟键盘接口的开放麒麟虚拟键盘,使得openKylin成为首个基于fcitx5输入法框架提供虚拟键盘输入法的操作系统,实现了从0到1的突破!

2 开放麒麟虚拟键盘2.0亮点

时光飞逝,开放麒麟虚拟键盘从去年的1.0版本升级到了2.0版本。开放麒麟虚拟键盘1.0具有较好的兼容性,支持常见的英文输入法和拼音输入法引擎。在此基础之上,开放麒麟虚拟键盘2.0又增加了一些新的功能特性:支持悬浮模式、支持随意拖拽虚拟键盘、支持全功能虚拟键盘、支持多种虚拟键盘唤醒方式、支持虚拟键盘托盘图标右键菜单等等。这些新的特性都是为了提高虚拟键盘的易用性和可用性。

2.1 易使用

  - 支持虚拟键盘悬浮模式
  - 支持多种虚拟键盘唤醒方式
  - 支持托盘图标右键菜单管理功能

2.2 功能全

  - 支持全功能虚拟键盘

3 openKylin 上虚拟键盘

3.1 虚拟键盘悬浮模式

  在麒麟虚拟键盘1.0版本中,虚拟键盘只支持平铺模式。在该模式下,虚拟键盘显示后会顶起应用程序。经过与社区爱好者的讨论发现,虚拟键盘平铺模式在某些情况下会给用户造成不便。
  为了解决这个问题,开放麒麟虚拟键盘引入新的布置模式:悬浮模式。并且,开放麒麟虚拟键盘UI提供了布置模式切换按钮,方便用户根据需要选择自己喜欢的布置模式。
  在悬浮模式下,虚拟键盘显示后不再顶起应用程序,而是直接显示在应用程序的上面,解决了用户反馈的问题。同时,该模式支持自由拖拽、位置记忆以及等比例屏幕旋转等功能。

3.1.1  自由拖拽

为了方便用户查看被虚拟键盘挡住的内容,用户可以按住虚拟键盘拖拽条自由拖拽虚拟键盘从而改变虚拟键盘的位置。
  虚拟键盘的拖拽逻辑非常简单而且符合直觉。用户在拖拽虚拟键盘的时候可以随意改变虚拟键盘的位置,就像拖动普通窗口一样——虚拟键盘会跟随鼠标位置的变换进而改变自身的位置,确保虚拟键盘始终跟随鼠标。因为鼠标始终在屏幕可视范围内,所以,虚拟键盘始终在屏幕范围内至少有一部分是可见的。
  与普通窗口不同的是,在用户停止拖拽后,虚拟键盘会检测自身是否完全可见。如果不是完全可见,则虚拟键盘会自动调整自身的位置,使得虚拟键盘的边缘跟屏幕边缘对齐,确保虚拟键盘完全可见,以便用户进行输入。如果是完全可见,则虚拟键盘会在用户停止拖拽后直接停留在当前位置。

3.1.2  位置记忆

    虚拟键盘会实时记录其在悬浮模式下的位置。在虚拟键盘关闭后,如果想要虚拟键盘再次显示出来,那么,它会显示到其上一次显示的位置。

3.1.3  屏幕旋转

    虚拟键盘支持屏幕旋转。在虚拟键盘可见时,如果发生屏幕旋转,则虚拟键盘会自动旋转,确保虚拟键盘在新的屏幕方向下有一个合理的位置。
    具体的旋转算法就是等比例旋转。悬浮模式下的虚拟键盘无论是在横屏还是在竖屏,其左边距占左边距与右边距之和的比例是一样的;其上边距占上边距与下边距之和的比例是一样的。这种算法使得屏幕旋转后虚拟键盘的新位置符合用户的直觉。
    如果用户在某一个屏幕方向显示了虚拟键盘然后又关闭虚拟键盘,接着旋转屏幕方向90度,然后唤醒虚拟键盘。这时候,虚拟键盘的新位置仍然使用的是等比例旋转算法。这就使得虚拟键盘对屏幕旋转的支持得到了简化。无论虚拟键盘在计算自己新的位置的时候都是根据等比例算法来计算的。

3.2 多种虚拟键盘唤醒方式

3.2.1 虚拟键盘托盘图标

  为了解决某些应用程序无法自动唤醒虚拟键盘的问题,PC模式下的任务栏中的虚拟键盘图标增加了对鼠标左键或触摸单击事件的处理逻辑。如果虚拟键盘不可见,则单击虚拟键盘图标后虚拟键盘显示;如果虚拟键盘可见,则单击虚拟键盘图标后虚拟键盘隐藏

3.2.2 悬浮球

  为了解决某些应用程序无法自动唤醒虚拟键盘的问题,需要为平板模式提供其他的虚拟键盘唤醒入口。为此,我们提供了悬浮球。尽管悬浮球主要是为了解决平板模式下的问题,但是,PC模式也是支持该功能的。为了提供虚拟键盘的易用性,悬浮球功能默认是启用的。如果用户不想使用,我们也提供了停用悬浮球功能的入口。

3.3 托盘图标右键菜单管理功能

3.3.1 管理悬浮球的可用性

  为了能够让用户根据自己的实际情况决定是否常驻显示悬浮球,减小视觉干扰,我们提供了改变悬浮球可用性的入口。用户可根据自己的喜好来改变悬浮球的可用性,即通过鼠标右键或触摸长按虚拟键盘托盘图标可唤醒右键菜单,右键菜单项提供了管理悬浮球可用性的入口。用户可以通过右键菜单项来启用或禁用悬浮球。 

3.4 全功能虚拟键盘

3.4.1 支持快捷键


  1.0版本的虚拟键盘不支持很多常见的物理键盘快捷键,无法通过虚拟键盘使用这些快捷键。针对此问题,我们拓展了虚拟键盘的功能。2.0版本的虚拟键盘进化为全功能虚拟键盘,提供同物理键盘一致的使用效果,用户可通过虚拟键盘使用多种常用的快捷键。 

4 openKylin上输入法未来支持计划

4.1 物理键盘输入法相关

    - 自研openKylin物理键盘输入法

4.2 虚拟键盘输入法相关

    - 虚拟键盘支持少数民族语言 
    - 虚拟键盘支持功能设置

5 期待加入InputMethod Sig

5.1 InputMethod Sig介绍

  输入法SIG组是由一群热爱开源技术的爱好者所组成的团队。我们致力于为开源操作系统开发高质量的输入法,并在开源社区中积极推广和分享相关技术。 
  SIG组欢迎广大开源爱好者积极参与进来,为开源输入法的发展和完善贡献自己的力量。同时,SIG组也将不断探索和尝试新的技术,为用户提供更加便捷、高效的输入体验。

5.2 联系我们

    input-method@lists.openkylin.top
 

UKUI
设计
开发
参与