Steam Frame Lepton添加手柄映射支持

Steam Frame Lepton添加手柄映射支持

· json · rss
Subscribe:

About

目前lepton并没有启用steam input和硬件手柄的直接输入,所以需要手动在容器启动时手动把宿主机的/dev/input/ 手动映射到podman容器中,需要修改mounting.sh添加以下字段

配置路径:~/.local/share/Steam/steamapps/common/Lepton/liblepton/mounting.sh


# Steam Input exposes Frame controllers as virtual Xbox gamepads on SteamOS.
    # Event numbers change across boots, so select devices by their kernel name
    # instead of hard-coding event numbers (or exposing all of /dev/input).
    local gamepad_count=0
    local input_node input_name is_gamepad
    for input_node in /dev/input/event*; do
        [[ -c "${input_node}" ]] || continue

        # udev's ID_INPUT_JOYSTICK can also be set on Steam Ctrl mouse/keyboard
        # interfaces on Frame, so use the kernel-reported name to avoid passing
        # those unrelated devices into Android.
        input_name="$(cat "/sys/class/input/${input_node##*/}/device/name" 2>/dev/null || true)"
        is_gamepad=false
        if [[ "${input_name,,}" == *gamepad* || "${input_name,,}" == *joystick* || "${input_name,,}" == *"x-box"* || "${input_name,,}" == *xbox* ]]; then
            is_gamepad=true
        fi

        [[ "${is_gamepad}" == true ]] || continue

        podman_cmdline --device "${input_node}:${input_node}:r"
        println "Passing gamepad input ${input_node} into Lepton"
        ((gamepad_count += 1))
    done
    if [[ "${gamepad_count}" -eq 0 ]]; then
        println "No host evdev gamepad found; Android apps will not receive Linux gamepad input"
    fi