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