Android USB 鼠标右键单击正确行为 (ICS)

标签 android click usb mouse

插入 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/

相关文章:

java - RSA key key 静态生成

android - 如何以编程方式重启android应用程序?

java - Android RecyclerView 存在 EditText 洗牌问题

javascript - 如果没有页面刷新,单击功能不会触发

java - 当鼠标位于组件外部时,如何获取单击时的鼠标位置?

javascript - 是否可以点击可移动的 div?

c - 使用 LUFA 作为 CDC 进行字符串传输

java - Java TCP/IP 套接字如何向应用程序报告传输成功或失败?

c - 如何为硬件版权保护加密狗编写一个简单的usb驱动程序?

c - 我如何使用 libusb-1.0 接收 HID 报告?