2012-04-06 106 views
6

右键点击插入到Android(ics)的USB鼠标总是指定为'后退'按钮?我没有一台平板电脑。Android的USB鼠标右键单击正确的行为(ICS)

我想删除状态栏,仍然可以使用带有USB鼠标的平板电脑。

有谁知道在哪里/如何配置在android中的行为?

+0

请指定平板电脑的型号/品牌。 – 2012-04-10 18:19:52

+0

这是一个直接来自中国工厂的无名品牌。似乎他们犯了一个错误,当时我不知道标准行为是什么意思。因为他们没有立即承认它是一个错误。谢谢turbo。 – 2012-12-21 08:59:15

回答

9

迟到的答案,但答案是肯定的。我将提供一些关于此主题的更多详细信息,因为它是只有这种类型的Internet上的主题。

默认行为: Android将此视为后退按钮,没有可见的例外情况。

这是手机和普通应用的相当不错的功能。但是,有两种类型的人希望以不同的方式实现此功能。 Modders和应用程序开发人员。

游戏模组修正:在一个根设备(和潜在的无根用于与解锁ADB不少失败者装置),观察Generic.kl/system/usr/keylayout下。搜索国旗KEY_BACK,可能有多个链接在它上面的多个键码。对我来说,它是key 158WAKE_DROPPED国旗。对于通用的“右键单击”功能,您需要交换后退键和菜单键的数字代码,因此当鼠标发送后退键命令时,系统实际上将触发菜单键命令,同时保留一些设备上的硬件键(标记为菜单键)用于返回。是的,这将颠倒手机上的硬件按键,但它是最简单的解决方案,无需重建整个ROM。如果这是为了企业或专业事业,可能会看到这篇文章:Overriding Mouse Events Kernel-Level。我实际上建议创建一个覆盖他们引用的过程的Xposed模块。否则,请查看如何重新映射键码,对不起,我无法在此处找到直接的文章。

应用程序开发人员的修复:非root:在您的应用程序中覆盖回密钥并返回true。在您的onBackPressed()覆盖中,执行任何必要的右键单击功能。简单!由于您最想要的是类似PC的上下文菜单功能,因此您还需要通过应用于根视图的MotionEvent侦听器跟踪鼠标所在的位置,其中event.getRawX()和RawY()调用将值存储到全局变量。然后,您可以通过设置顶部和左侧边距将您的上下文菜单(大小为ListView或VerticalLinearLayout)放置在光标下并将其设置为可见。如果要通过右键单击(例如删除或复制)在布局中的悬停对象上执行辅助功能,则必须手动确定存储的鼠标坐标悬停在哪个对象上。您可能必须在每个受影响的对象上添加MotionEvent.ACTION_HOVER_ENTER侦听器,并将对象ID存储在全局变量中,以便在调用onBackPressed()函数时使用。 (我会在有空的时候提供代码!)

希望这有助于任何人探索这样一个特定的主题! :)

+0

你也可以在你的activity类中覆盖'boolean onKeyDown(int keyCode,final KeyEvent event)'和'onKeyUp',并检查if(keyCode == KeyEvent.KEYCODE_BACK && event.GetSource()== InputDevice.SOURCE_MOUSE)。 ..'过滤由USB鼠标生成的按键,但通常处理您的手机后退键。 – pelya 2015-06-04 20:10:10

+0

这是一个更具体的方法。感谢分享! – 2015-06-05 03:00:40

相关问题