当前位置: 首页 > news >正文

解决Lemuroid识别不到蓝牙键盘的问题

Android系统基于libretro的全能游戏模拟器,目前有RetroArch,Kodi,Lemuroid。
而且这三个都是开源免费的APP。

Lemuroid相对前面两个功能比较简陋。也不能自己下载核心。但代码也是最少的。

在使用Lemuroid的时候,发现它不能检测出我的蓝牙键盘,也就不能用蓝牙键盘操作游戏。

经过一番研究找到了问题所在,在此做一个笔记。


不知什么原因,作者对android系统的输入设备做了一个过滤:

源码文件在:lemuroid-app\src\main\java\com\swordfish\lemuroid\app\shared\input\InputDeviceManager.kt
如下代码,在获取所有输入设备时对设备列表进行了过滤,删掉.filter的两行代码就好了。

    private fun getAllGamePads(): List<InputDevice> {return runCatching {InputDevice.getDeviceIds().map { InputDevice.getDevice(it) }.filter { it.getLemuroidInputDevice().isSupported() }.filter { it.name !in BLACKLISTED_DEVICES }.sortedBy { it.controllerNumber }}.getOrNull() ?: listOf()}

如果不想自己编译,可以找官方编译的APK进行反编译再修改。

针对smali的修改,主要是去掉两个if-eqz的判断。
不同的版本,修改位置不一样,下面的smali代码仅供参考:

    invoke-interface {v3}, Lm4/a;->a()Zmove-result v3if-eqz v3, :cond_1 #删除此行invoke-interface {v0, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Zgoto :goto_1.line 9:cond_2new-instance v1, Ljava/util/ArrayList;invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V.line 10invoke-interface {v0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;move-result-object v0:cond_3:goto_2invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Zmove-result v2if-eqz v2, :cond_4invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;move-result-object v2move-object v3, v2check-cast v3, Landroid/view/InputDevice;.line 11sget-object v4, Lk4/b;->f:Ljava/util/Set;invoke-virtual {v3}, Landroid/view/InputDevice;->getName()Ljava/lang/String;move-result-object v3invoke-interface {v4, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Zmove-result v3xor-int/lit8 v3, v3, 0x1if-eqz v3, :cond_3 #删除此行invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z

相关文章:

解决Lemuroid识别不到蓝牙键盘的问题

Android系统基于libretro的全能游戏模拟器&#xff0c;目前有RetroArch&#xff0c;Kodi&#xff0c;Lemuroid。 而且这三个都是开源免费的APP。 Lemuroid相对前面两个功能比较简陋。也不能自己下载核心。但代码也是最少的。 在使用Lemuroid的时候&#xff0c;发现它不能检测…...

SpringBoot 使用 Sa-Token 完成权限认证

一、设计思路 所谓权限认证&#xff0c;核心逻辑就是判断一个账号是否拥有指定权限&#xff1a; 有&#xff0c;就让你通过。没有&#xff1f;那么禁止访问&#xff01; 深入到底层数据中&#xff0c;就是每个账号都会拥有一个权限码集合&#xff0c;框架来校验这个集合中是…...

Spring核心与设计思想、创建与使用

文章目录 一、Spring是什么二、为什么要学习框架三、IoC和DI&#xff08;一&#xff09;IoC1. 认识IoC2. Spring的核心功能 &#xff08;二&#xff09;DI 四、Spring项目的创建&#xff08;一&#xff09;使用 Maven 方式创建一个 Spring 项目 五、Spring项目的使用&#xff0…...

mysql 备份 还原

1:备份 执行命令方案1: /usr/local/mysql/bin/mysqldump -uX -pX -h 127.0.0.1 --set-gtid-purgedOFF --skip-extended-insert --add-drop-table --add-locks --create-options --disable-keys --lock-tables --quick --set-charset -e --max_allowed_packet16777216 --net_b…...

每日学术速递4.26

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AutoNeRF: Training Implicit Scene Representations with Autonomous Agents 标题&#xff1a;AutoNeRF&#xff1a;使用自主代理训练隐式场景表示 作者&#xff1a;Pierre Marz…...

RabbitMQ使用StringRedisTemplate-防止重复消费

造成重复消费的原因&#xff1a; MQ向消费者推送message&#xff0c;消费者向MQ返回ack&#xff0c;告知所推送的消息消费成功。但是由于网络波动等原因&#xff0c;可能造成消费者向MQ返回的ack丢失。MQ长时间&#xff08;一分钟&#xff09;收不到ack&#xff0c;于是会向消…...

临沂大学张继群寄语

目录 寄语 1、不能有不良睹好 2、坚毅的个性和勤奋的品质 3、会存钱...

线程学习笔记

1:Thread 线程的生命周期控制 2:Runnable 可执行的任务和程序 3:Callable 执行程序后返回结果 4:Future 收集程序返回结果 5:Executor 线程池 6:ForkJoin 默认线程池 每个线程有工作队列 工作窃取 7:RunnableFuture FutureTask 实现 Runnable 和 Future 执…...

代码随想录算法训练营第四十二天|01背包问题,你该了解这些!、01背包问题,你该了解这些! 滚动数组 、416. 分割等和子集

文章目录 01背包问题&#xff0c;你该了解这些&#xff01;01背包问题&#xff0c;你该了解这些&#xff01; 滚动数组416. 分割等和子集 01背包问题&#xff0c;你该了解这些&#xff01; 题目链接&#xff1a;代码随想录 二维数组解决0-1背包问题 解题思路&#xff1a; 1.dp…...

结构体指针、数组指针和结构体数组指针

结构体指针 首先让我们定义结构体&#xff1a; struct stu { char name[20]; long number; float score[4]; }; 再定义指向结构体类型变量的指针变量&#xff1a; struct stu *student; /*定义结构体类型指针*/ student malloc(sizeof(struct stu)); /*为指针变量分…...

项目架构一些注意点

考虑系统的 稳定性 一、微服务的稳定性 1、如何解决那些不稳定的因素/问题&#xff1f;也是常说的如何容错。 2、一个系统的高可用取决于它本身和其强依赖的组件的高可用 3、消除单点 保活机制 健康检查 注册中心如何保障稳定性 注册中心集群 微服务本身对注册信息的本地持…...

Forefront GPT-4免费版:开启无限畅聊时代,乐享人工智能快感,无限制“白嫖”,还能和N多角色一起聊天?赶紧注册,再过些时间估计就要收费了

目录 前言注册登录方式应用体验聊天体验绘图体验 “是打算先免费后收费吗&#xff1f;”建议其它资料下载 前言 近期&#xff0c;人工智能技术迎来重大飞跃&#xff0c;OpenAI的ChatGPT等工具成为全球数亿人探索提高生产力和增强创造力的新方法。人们现在可以使用人工智能驱动…...

深入浅出 Compose Compiler(1) Kotlin Compiler KCP

前言 Compose 的语法简洁、代码效率非常高&#xff0c;这主要得益于 Compose Compiler 的一系列编译期魔法&#xff0c;帮开发者生成了很多样板代码。但编译期插桩也阻碍了我们对于 Compose 运行原理的认知&#xff0c;想要真正读懂 Compose 就必须先了解它的 Compiler。本系列…...

BatchNormalization和LayerNormalization的理解、适用范围、PyTorch代码示例

文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时&#xff0c;文章形形色色&#xff0c;但没找到适合小白通俗易懂且全面的。学习过后&#xff0c;特此记录。 为什么要Normalization 当输入数据量级极大或极小时&#xff0c;为保证输出数…...

大数据 | 实验二:文档倒排索引算法实现

文章目录 &#x1f4da;实验目的&#x1f4da;实验平台&#x1f4da;实验内容&#x1f407;在本地编写程序和调试&#x1f955;代码框架思路&#x1f955;代码实现 &#x1f407;在集群上提交作业并执行&#x1f955;在集群上提交作业并执行&#xff0c;同本地执行相比即需修改…...

Java文档注释-JavaDoc标签

标签含义author指定作者{code}使用代码字体以原样显示信息&#xff0c;不处理HTML样式deprecated指定程序元素已经过时{docRoot}指定当前文档的根目录路径exception标识由方法或构造函数抛出的异常{inheritDoc}从直接超类中继承注释{link}插入指向另外一个主题的内联链接{linkp…...

黑盒测试过程中【测试方法】详解5-输入域,输出域,猜错法

在黑盒测试过程中&#xff0c;有9种常用的方法&#xff1a;1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 黑盒测试过程中【测试方法】讲解1-等价类&#xff0c;边界值&#xff0c;判定表_朝一…...

Python学习之sh(shell脚本)在Python中的使用

文章目录 前言一、sh是什么&#xff1f;二、使用步骤1.安装2.使用示例3.使用sh执行命令4.关键字参数5.查找命令6.Baking参数 前言 本文章向大家介绍[Python库]分析一个python库–sh&#xff08;系统调用&#xff09;&#xff0c;主要内容包括其使用实例、应用技巧、基本知识点…...

追求卓越:编写高质量代码的方法和技巧

本文讨论了编写高质量代码的重要性&#xff0c;并详细介绍了高质量代码的特征、编程实践技巧和软件工程方法论。通过遵循这些原则和实践&#xff0c;程序员可以编写出更稳定、可维护和可扩展的代码。 一、 前言 写出高质量代码是每个程序员的追求和目标。高质量的代码可以使程…...

MATLAB算法实战应用案例精讲-【人工智能】机器视觉(概念篇)(最终篇)

目录 前言 几个高频面试题目 如何评价一个光源的好坏? 如何依靠光源增强图像对比度?...

华为ENSP实战:手把手教你搭建住宅小区网络拓扑(附完整配置脚本)

华为ENSP实战&#xff1a;从零构建智能小区网络的全栈解决方案 当清晨第一缕阳光透过窗帘洒进房间&#xff0c;现代人睁开眼的第一件事往往是拿起手机查看消息——这种习以为常的场景背后&#xff0c;是无数个日夜运行的住宅小区网络在默默支撑。作为网络工程师&#xff0c;我…...

SDMatte新手入门:交互式点选,让复杂抠图变简单

SDMatte新手入门&#xff1a;交互式点选&#xff0c;让复杂抠图变简单 1. 什么是SDMatte&#xff1f; SDMatte是一款基于扩散模型的交互式图像抠图工具&#xff0c;由vivoCameraResearch团队开发。它通过简单的点选操作&#xff0c;就能实现专业级的图像抠图效果&#xff0c;…...

别再死记硬背TTS原理了!用Python+TensorFlow复现一个简易Deep Voice,从音素到语音全流程拆解

用PythonTensorFlow实战Deep Voice&#xff1a;从音素到语音的完整实现指南 当你第一次听到计算机生成的语音时&#xff0c;是否好奇过这背后的魔法是如何实现的&#xff1f;现代文本转语音(TTS)系统已经能够产生几乎与真人无异的语音&#xff0c;而Deep Voice作为早期端到端TT…...

保姆级教程:STM32F103开发第一步,搞定Keil5安装、激活与芯片包(附资源包)

STM32F103开发环境搭建全指南&#xff1a;从Keil5安装到芯片包配置 引言&#xff1a;为什么选择Keil MDK进行STM32开发 对于刚接触STM32微控制器的新手来说&#xff0c;开发环境搭建往往是第一个"拦路虎"。Keil MDK&#xff08;Microcontroller Development Kit&…...

从一次数据精度丢失的坑说起:详解Pandas fillna的‘静默下转型’与infer_objects的正确用法

从数据精度陷阱到稳健处理&#xff1a;Pandas类型转换的深度防御实践 1. 当.fillna(0)成为数据分析的隐形杀手 凌晨三点的办公室&#xff0c;咖啡杯早已见底。数据分析师李明盯着屏幕上诡异的报表结果——所有百分比计算结果突然变成了整齐的整数。这个看似简单的数据清洗操作…...

LeetCode 98. Validate Binary Search Tree 题解

LeetCode 98. Validate Binary Search Tree 题解 题目描述 给你一个二叉树的根节点 root&#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子…...

Qwen-Image-2512-SDNQ Web服务实战:WebUI下载功能与浏览器兼容性全平台测试

Qwen-Image-2512-SDNQ Web服务实战&#xff1a;WebUI下载功能与浏览器兼容性全平台测试 1. 项目概述与核心价值 今天我要和大家分享一个特别实用的AI图片生成项目——基于Qwen-Image-2512-SDNQ-uint4-svd-r32模型的Web服务。这个项目最大的亮点在于&#xff0c;它把复杂的AI图…...

不止是上网:用PVE虚拟的OpenWRT旁路由解锁Docker、AdGuard Home和异地组网玩法

解锁PVE虚拟OpenWRT旁路由的进阶玩法&#xff1a;从Docker到智能家居中枢 在家庭网络架构中&#xff0c;OpenWRT旁路由早已超越了简单的网关转发角色。当它运行在PVE虚拟化环境中时&#xff0c;这个轻量级Linux系统&#xff08;仅需1G内存&#xff09;可以变身为多功能家庭网络…...

Tao-8k辅助学术研究:从研究想法到LateX论文草稿

Tao-8k辅助学术研究&#xff1a;从研究想法到LateX论文草稿 作为一名研究生或科研人员&#xff0c;你是否经常被这样的场景困扰&#xff1a;脑子里有个模糊的研究想法&#xff0c;却不知如何系统化地展开&#xff1b;面对海量文献&#xff0c;梳理综述耗时耗力&#xff1b;实验…...

告别境外断网:Nrfr让全球网络无缝连接——免Root跨国通信解决方案

告别境外断网&#xff1a;Nrfr让全球网络无缝连接——免Root跨国通信解决方案 【免费下载链接】Nrfr &#x1f30d; 免 Root 的 SIM 卡国家码修改工具 | 解决国际漫游时的兼容性问题&#xff0c;帮助使用海外 SIM 卡获得更好的本地化体验&#xff0c;解锁运营商限制&#xff0c…...