EmuELEC/手柄

EmuELEC/手柄

EmuELEC 默认使用 udev 作为手柄输入设备驱动。一些人推荐换成 sdl2(EmuELEC 设置:驱动-手柄驱动)。(原因:udev 对双手柄,PPSSPP 等支持不好?)

手柄配置文件

/storage/.config/emulationstation/es_input.cfg
/storage/.config/retroarch/retroarch.cfg
/storage/.config/emulationstation/scripts/drastic/config/drastic.cfg
/storage/.config/emulationstation/scripts/drastic/config/drastic.cf2

配对蓝牙手柄

首先尝试在 EmuELEC 界面的设置里配对蓝牙手柄。

遇到过在 EmuELEC (3.4) 设置界面里始终无法配对蓝牙手柄问题。这时可以手工在 ssh 里配对:

bluetoothctl
> power on
> discoverable on
> pairable on
> scan on
> trust 00:11:22:33:44:55
> pair 00:11:22:33:44:55
> connect 00:11:22:33:44:55

00:11:22:33:44:55 是手柄的蓝牙 MAC 地址(scan时会列出所有周围的蓝牙设备地址)。如果 pair / connect 不成功可以多试几次 / 将手柄关机再重新打开进入配对模式等。

相关 Debug :

systemctl status bluetooth

# EmuELEC 保存已配对/连接过的蓝牙设备信息目录
ls /storage/.cache/bluetooth

开机无法自动连接蓝牙手柄

开机后,无法自动连接已配对过的蓝牙手柄。Workaround:修改EmuELEC 的启动脚本,强制开机时一直尝试连接手柄。(请先配对手柄一次)

/storage/.config/custom_autostart.sh

chown -R root:root /storage/.cache/bluetooth

bluetoothctl power on          
# bluetoothctl trust 00:11:22:33:44:55

while [ 1 ]
do
  bluetoothctl connect 00:11:22:33:44:55  
  if [ $? = 0 ]
  then               
    break                               
  fi
  sleep 5  
done

参考了下面的资料

N1 emuelec 关机或切换系统后不能重新连上蓝牙手柄问题

症状:N1盒子安装emuelec系统后成功蓝牙匹配好手柄,下次开机就不能使用手柄。

原因:USB设备接入安卓系统后,安卓系统破坏了USB设备STORAGE的权限,导致EmuELEC蓝牙读取错误。

解决方法:修改 EmuELEC ext4 分区的 /storage/.config/custom_start.sh 文件,在最后加入1行:

chown -R root:root /storage/.cache/bluetooth

手柄按键映射配置

对于按键不识别或错乱的杂牌蓝牙手柄,可以在 EmuELEC、Drastic、RetroArch、PPSSPP 等模拟器配置里各自单独配置手柄按键映射。(配置时可能需要 usb 键盘辅助操作)

也可以把手柄按键配置保存到 GameControllerDB 文件,RetroArch 和 PPSSPP 默认会读取 GameControllerDB 文件尝试自动配置连接的蓝牙手柄按键映射。

GameControllerDB 文件可以从 github jimsavage/SDL_GameControllerDB下载: gamecontrollerdb.txt

PPSSPP 使用的 GameControllerDB 文件位置:/storage/.config/ppsspp/assets/gamecontrollerdb.txt

RetroArch 使用的 GameControllerDB 文件 /storage/.config/SDL-GameControllerDB

修改 GameControllerDB 手工添加杂牌手柄支持

网上下载的 GameControllerDB 文件里不支持很多杂牌手柄,需要自行编辑 gamecontrollerdb.txt 文件手工加入对杂牌蓝牙手柄支持。以 飞智黑武士X9ET pro 为例:

首先在 EmuELEC 设置里配置好手柄的按键映射。

打开 /storage/.config/emulationstation/es_input.cfg 文件,这是 EmuELEC 图形界面手柄按键设置里生成的手柄按键配置文件,格式如下:

 <inputConfig type="joystick" deviceName="FeiZhiX9ET/ETPro" deviceGUID="05000000151900004000000001000000">
    <input name="a" type="button" id="5" value="1"/>
    <input name="b" type="button" id="6" value="1"/>
    <input name="down" type="hat" id="0" value="4"/>
    <input name="hotkeyenable" type="button" id="4" value="1"/>
    <input name="left" type="hat" id="0" value="8"/>
    <input name="leftanalogdown" type="axis" id="1" value="1"/>
    <input name="leftanalogleft" type="axis" id="0" value="-1"/>
    <input name="leftanalogright" type="axis" id="0" value="1"/>
    <input name="leftanalogup" type="axis" id="1" value="-1"/>
    <input name="leftshoulder" type="button" id="9" value="1"/>
    <input name="leftthumb" type="button" id="15" value="1"/>
    <input name="lefttrigger" type="button" id="11" value="1"/>
    <input name="right" type="hat" id="0" value="2"/>
    <input name="rightanalogdown" type="axis" id="3" value="1"/>
    <input name="rightanalogleft" type="axis" id="2" value="-1"/>
    <input name="rightanalogright" type="axis" id="2" value="1"/>
    <input name="rightanalogup" type="axis" id="3" value="-1"/>
    <input name="rightshoulder" type="button" id="10" value="1"/>
    <input name="rightthumb" type="button" id="16" value="1"/>
    <input name="righttrigger" type="button" id="12" value="1"/>
    <input name="select" type="button" id="13" value="1"/>
    <input name="start" type="button" id="14" value="1"/>
    <input name="up" type="hat" id="0" value="1"/>
    <input name="x" type="button" id="7" value="1"/>
    <input name="y" type="button" id="8" value="1"/>
  </inputConfig>
</inputList>

对照这个文件内容写入 gamecontrollerdb.txt,加入1行,格式如下:

05000000151900004000000001000000,FeiZhiX9ET/ETPro,a:b5,b:b6,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,leftshoulder:b9,leftstick:b15,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b16,righttrigger:b12,rightx:a2,righty:a3,start:b14,x:b7,y:b8,platform:Linux,

注意 thumb = stick

手柄按键名

L2                    R2
L1                    R1

     select    start

     Up               x
Left      Right    y     a
     Down             b

LS                    RS
Up, Down, Left, Right: DPAD 键
L1: left shoulder
L2: left trigger
R1: right shoulder
R2: right trigger
L3: leftthumb (leftstick) (左摇杆(LS)按下的键)
R3: rightthumb (rightstick) (右摇杆(RS)按下的键)

RetroArch 里可以设置对于一些老机种自动将摇杆映射为 DPAD 的方向键。

Drastic

推荐按键映射:

左摇杆(LS)(额外)映射为 DPAD
右摇杆(RS)映射为触摸笔移动,R3映射为触摸笔点击。

Extra control 设置:
L2 设置为打开 Drastic 菜单
R2 设置为切换 NDS 双屏显示位置。

Last update: 2020-05-29 10:39:06 UTC