插入android(ics)的USB鼠标右键单击是否始终指定为“后退”按钮?我有一台没有的平板电脑。
我想删除状态栏,仍然可以使用带有 USB 鼠标的平板电脑。
有谁知道在哪里/如何在android中配置行为?
迟到的答案,但答案是肯定的。我将提供有关此主题的更多详细信息,因为它是Internet 上此类唯一的主题。
默认行为: Android 将此视为后退按钮,没有可见的异常。
对于手机和普通应用程序来说,这是一个非常好的功能。但是,有两种类型的人希望以不同的方式实现此功能。模组制作者和应用程序开发人员。
Modders 的修复:在有根设备上(对于许多未锁定 adb 的失败设备可能没有根),Generic.kl
在/system/usr/keylayout
. 搜索 flag KEY_BACK
,可能有多个 keycode 在与其链接的多行上。对我来说,它key 158
与WAKE_DROPPED
国旗有关。对于通用的“右键单击”功能,您需要交换后退键和菜单键的数字代码,因此当鼠标发送后退键命令时,系统实际上会触发菜单键命令,同时保持一些设备上用于返回的硬件键(标记为菜单键)。是的,这将反转您手机上的硬件密钥,但这是最简单的解决方案,无需重建整个 ROM。如果这是出于公司或专业原因,可能会看到这篇文章:覆盖鼠标事件内核级。我实际上建议创建一个 Xposed 模块来覆盖他们引用的过程。否则,请查看如何重新映射键码,抱歉我在这里找不到直截了当的文章。
应用程序开发人员的修复:非 root:覆盖应用程序中的返回键并返回 true。在您的onBackPressed()
覆盖中,执行任何必要的右键单击功能。简单的!由于您很可能需要类似 PC 的上下文菜单功能,因此您还需要通过 MotionEvent 侦听器跟踪鼠标所在的位置,该侦听器使用event.getRawX()
和 RawY() 调用将值存储到全局变量的根视图. 然后,您可以通过设置顶部和左侧边距将上下文菜单(大小为 ListView 或 VerticalLinearLayout)置于光标下并将其设置为可见。如果您想通过右键单击对布局中的悬停对象执行辅助功能,例如删除或复制,则必须手动确定存储的鼠标坐标悬停在哪个对象上。您可能必须添加MotionEvent.ACTION_HOVER_ENTER
每个受影响对象上的侦听器,并将对象 ID 存储在全局变量中,以便在调用 onBackPressed() 函数时使用。(有时间我会提供代码!)
希望这可以帮助任何探索这样一个特定主题的人!:)