From 240b8fea15fd6b17e4c10bea9bb829564cf715a0 Mon Sep 17 00:00:00 2001 From: Michel-FK Date: Mon, 26 Apr 2021 21:33:53 +0200 Subject: [PATCH] make keymap work with Instant Play Signed-off-by: Michel-FK --- .../rootfs-overlay/usr/local/sbin/keymap | 115 ++++++++++++++++-- .../usr/local/sbin/start_launcher | 4 +- FunKey/package/fkgpiod/fkgpiod.mk | 2 +- FunKey/package/libopk/libopk.mk | 2 +- FunKey/package/retrofe/retrofe.mk | 2 +- Recovery/package/fkgpiod/fkgpiod.mk | 2 +- 6 files changed, 114 insertions(+), 13 deletions(-) diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/keymap b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/keymap index ddba97d..ce38d85 100755 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/keymap +++ b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/keymap @@ -1,14 +1,113 @@ #!/bin/sh -# Check number of args -if [ ${#} -ne 1 ]; then - echo "Usage: $(basename ${0}) keymap_file" +# Uncomment the following line to get debug info +#set -x + +SELF=$(basename ${0}) +LAST_MAPPING="/mnt/FunKey/.last_mapping.key" +FIFO="/tmp/fkgpiod.fifo" + +usage() { + echo "Usage: ${SELF} default" + echo " ${SELF} load " + echo " ${SELF} resume" + echo " ${SELF} rom " + echo " ${SELF} save " exit 1 +} + +log() { + logger -t "${SELF}[$$]" "$*" +} + +write_fifo() { + echo "${1}" >"${FIFO}" 2>/dev/null +} + +# Check number of args +if [ ${#} -lt 1 ]; then + usage fi -if [ "${1}" = "reset" ]; then - keymap_file="/etc/fkgpiod.conf" -else - keymap_file="${1}" + +# Create FIFO it it does not exist yet +if [ ! -p "${FIFO}" ]; then + rm -f "${FIFO}" + log "FIFO does not exist, create it" + mkfifo "${FIFO}" + chmod 0640 "${FIFO}" fi -echo "LOAD ${keymap_file}" >/tmp/fkgpiod.fifo 2>/dev/null + +case "${1}" in + default) + if [ ${#} -ne 1 ]; then + usage + fi + log "default: LOAD /etc/fkgpiod.conf" + write_fifo "LOAD /etc/fkgpiod.conf" + ;; + + load) + if [ ${#} -ne 2 ]; then + usage + fi + config_file="${2}" + log "load: LOAD ${config_file}" + write_fifo "LOAD ${config_file}" + log "load: SAVE ${LAST_MAPPING}" + write_fifo "SAVE ${LAST_MAPPING}" + ;; + + resume) + if [ ${#} -ne 1 ]; then + usage + fi + if [ -f "${LAST_MAPPING}" ]; then + log "resume: LOAD ${LAST_MAPPING}" + write_fifo "LOAD ${LAST_MAPPING}" + fi + ;; + + rom) + if [ ${#} -gt 2 ]; then + usage + elif [ ${#} -eq 1 ]; then + console_keymap="" + rom_keymap="" + else + rom_path="${2}" + console_keymap="$(dirname "${rom_path}")/default_config.key" + rom_keymap="${rom_path%.*}.key" + fi + if [ -f "${console_keymap}" ]; then + log "rom: LOAD ${console_keymap}" + write_fifo "LOAD ${console_keymap}" + fi + for desktop_file in $(ls /opk/*.desktop 2>/dev/null); do + opk_keymap=$(grep FK-Keymap= "${desktop_file}" | cut -d '=' -f 2) + if [ -f "${opk_keymap}" ]; then + log "rom: LOAD ${opk_keymap}" + write_fifo "LOAD ${opk_keymap}" + fi + done + if [ -f "${rom_keymap}" ]; then + log "rom: LOAD ${rom_keymap}" + write_fifo "LOAD ${rom_keymap}" + fi + log "rom: SAVE ${LAST_MAPPING}" + write_fifo "SAVE ${LAST_MAPPING}" + ;; + + save) + if [ ${#} -ne 2 ]; then + usage + fi + config_file="${2}" + log "save: SAVE ${config_file}" + write_fifo "SAVE ${config_file}" + ;; + + *) + usage + ;; +esac exit 0 diff --git a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/start_launcher b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/start_launcher index ea37a12..906bba6 100755 --- a/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/start_launcher +++ b/FunKey/board/funkey/rootfs-overlay/usr/local/sbin/start_launcher @@ -22,11 +22,13 @@ cp "/usr/games/lynxboot.img" "/usr/games/mednafen-09x.cfg" "${MEDNAFEN_HOME}/" # Launch Previous Game if any if [ -f "${INSTANT_PLAY_FILE}" ]; then + keymap resume echo "Found Instant Play file, restarting previous game with command: "$(head -n 1 "${INSTANT_PLAY_FILE}") rm -f "${RESUME_PLAY_FILE}" mv "${INSTANT_PLAY_FILE}" "${RESUME_PLAY_FILE}" source "${RESUME_PLAY_FILE}" rm -f "${RESUME_PLAY_FILE}" + keymap default termfix_all fi @@ -64,7 +66,7 @@ while true; do termfix_all # In case retrofe/opkrun quits with errors, reset default key mapping - keymap reset + keymap default fi # WD to prevent 100% CPU diff --git a/FunKey/package/fkgpiod/fkgpiod.mk b/FunKey/package/fkgpiod/fkgpiod.mk index 4ca8ffb..6cf5917 100644 --- a/FunKey/package/fkgpiod/fkgpiod.mk +++ b/FunKey/package/fkgpiod/fkgpiod.mk @@ -4,7 +4,7 @@ # ################################################################################ -FKGPIOD_VERSION = fkgpiod-FunKey-1.0.0 +FKGPIOD_VERSION = 20b1a37 FKGPIOD_SITE_METHOD = git FKGPIOD_SITE = https://github.com/FunKey-Project/fkgpiod.git FKGPIOD_SITE_LICENSE = GPL-2.1+ diff --git a/FunKey/package/libopk/libopk.mk b/FunKey/package/libopk/libopk.mk index 53b4bdc..873f29c 100644 --- a/FunKey/package/libopk/libopk.mk +++ b/FunKey/package/libopk/libopk.mk @@ -3,7 +3,7 @@ # libopk # ############################################################# -LIBOPK_VERSION = libopk-FunKey-1.0.2 +LIBOPK_VERSION = 4ad3eb6 LIBOPK_SITE_METHOD = git LIBOPK_SITE = https://github.com/FunKey-Project/libopk.git diff --git a/FunKey/package/retrofe/retrofe.mk b/FunKey/package/retrofe/retrofe.mk index 1140671..2949db1 100644 --- a/FunKey/package/retrofe/retrofe.mk +++ b/FunKey/package/retrofe/retrofe.mk @@ -4,7 +4,7 @@ # ################################################################################ -RETROFE_VERSION = RetroFE-FunKey-1.1.2 +RETROFE_VERSION = 9a9989d RETROFE_SITE_METHOD = git RETROFE_SITE = https://github.com/FunKey-Project/RetroFE.git RETROFE_DEPENDENCIES = gstreamer1 gst1-plugins-base sdl sdl_image sdl_mixer sdl_sound sdl_ttf libglib2 sqlite zlib diff --git a/Recovery/package/fkgpiod/fkgpiod.mk b/Recovery/package/fkgpiod/fkgpiod.mk index 370293e..6cf5917 100644 --- a/Recovery/package/fkgpiod/fkgpiod.mk +++ b/Recovery/package/fkgpiod/fkgpiod.mk @@ -4,7 +4,7 @@ # ################################################################################ -FKGPIOD_VERSION = e74f688 +FKGPIOD_VERSION = 20b1a37 FKGPIOD_SITE_METHOD = git FKGPIOD_SITE = https://github.com/FunKey-Project/fkgpiod.git FKGPIOD_SITE_LICENSE = GPL-2.1+