From d335da157105fe2cf6dac798d3fd30b6f6506373 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Sat, 20 Jul 2024 11:35:50 +0200 Subject: [PATCH] feat: add support of jammasd --- Config.in | 3 ++ configs/recalbox-x86_64_defconfig | 2 ++ package/evsieve/Config.in | 12 ++++++++ package/evsieve/evsieve.mk | 36 ++++++++++++++++++++++++ package/jammasd/99-jammasd.rules | 3 ++ package/jammasd/Config.in | 3 ++ package/jammasd/jammasd | 46 +++++++++++++++++++++++++++++++ package/jammasd/jammasd.mk | 15 ++++++++++ 8 files changed, 120 insertions(+) create mode 100644 package/evsieve/Config.in create mode 100644 package/evsieve/evsieve.mk create mode 100644 package/jammasd/99-jammasd.rules create mode 100644 package/jammasd/Config.in create mode 100644 package/jammasd/jammasd create mode 100644 package/jammasd/jammasd.mk diff --git a/Config.in b/Config.in index 7b3dcecf85..5825735cba 100644 --- a/Config.in +++ b/Config.in @@ -98,6 +98,9 @@ menu "Controllers" comment "Piboy DMG XPI Gamecon support" source "$BR2_EXTERNAL_RECALBOX_PATH/package/xpi_gamecon_rpi/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/recalbox-volumed/Config.in" + comment "JammaSD" + source "$BR2_EXTERNAL_RECALBOX_PATH/package/jammasd/Config.in" + source "$BR2_EXTERNAL_RECALBOX_PATH/package/evsieve/Config.in" endmenu menu "Emulators" source "$BR2_EXTERNAL_RECALBOX_PATH/package/advancemame/Config.in" diff --git a/configs/recalbox-x86_64_defconfig b/configs/recalbox-x86_64_defconfig index 3a5d48c2d4..68f6e87854 100644 --- a/configs/recalbox-x86_64_defconfig +++ b/configs/recalbox-x86_64_defconfig @@ -420,3 +420,5 @@ BR2_PACKAGE_XPADNEO=y BR2_PACKAGE_XONE=y BR2_PACKAGE_XPAD_NOONE=y BR2_PACKAGE_WII_U_GC_ADAPTER=y +BR2_PACKAGE_EVSIEVE=y +BR2_PACKAGE_JAMMASD=y diff --git a/package/evsieve/Config.in b/package/evsieve/Config.in new file mode 100644 index 0000000000..8e22b80a8b --- /dev/null +++ b/package/evsieve/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_EVSIEVE + bool "evsieve" + depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_RUSTC + select BR2_PACKAGE_LIBEVDEV + help + Evsieve (from "event sieve") is a low-level utility that + can read events from Linux event devices (evdev) and write + them to virtual event devices (uinput), performing simple + manipulations on the events along the way. + + https://github.com/KarsMulder/evsieve diff --git a/package/evsieve/evsieve.mk b/package/evsieve/evsieve.mk new file mode 100644 index 0000000000..5e3bec4fb9 --- /dev/null +++ b/package/evsieve/evsieve.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# evsieve +# +################################################################################ + +EVSIEVE_VERSION = v1.4.0 +EVSIEVE_SOURCE = foo-$(EVSIEVE_VERSION).tar.gz +EVSIEVE_SITE = $(call github,KarsMulder,evsieve,$(EVSIEVE_VERSION)) +EVSIEVE_LICENSE = GPLv2 +EVSIEVE_LICENSE_FILES = COPYING + +EVSIEVE_DEPENDENCIES = host-rustc libevdev + +EVSIEVE_ARGS_FOR_BUILD = -L $(STAGING_DIR) -Wl,-rpath,$(STAGING_DIR) +EVSIEVE_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo RUSTFLAGS='$(addprefix -C linker=$(TARGET_CC) -C link-args=,$(EVSIEVE_ARGS_FOR_BUILD))' + +EVSIEVE_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(EVSIEVE_CARGO_MODE) + +EVSIEVE_CARGO_OPTS = \ + $(if $(BR2_ENABLE_DEBUG),,--release) \ + --target=$(RUSTC_TARGET_NAME) \ + --manifest-path=$(@D)/Cargo.toml + +define EVSIEVE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(EVSIEVE_CARGO_ENV) \ + cargo build $(EVSIEVE_CARGO_OPTS) +endef + +define EVSIEVE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/$(EVSIEVE_BIN_DIR)release/evsieve \ + $(TARGET_DIR)/usr/bin/evsieve + $(TARGET_STRIP) -s $(TARGET_DIR)/usr/bin/evsieve +endef + +$(eval $(generic-package)) diff --git a/package/jammasd/99-jammasd.rules b/package/jammasd/99-jammasd.rules new file mode 100644 index 0000000000..fd2896a641 --- /dev/null +++ b/package/jammasd/99-jammasd.rules @@ -0,0 +1,3 @@ +SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="ASD JammASD Interface Keyboard", ENV{ID_INPUT_JOYSTICK}="0", ENV{ID_INPUT_KEYBOARD}="0", ENV{ID_INPUT_KEY}="0", ENV{ID_INPUT_KEY}="0", RUN+="/usr/bin/jammasd $env{DEVNAME}" +SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="ASD JammASD Player 1", ENV{ID_INPUT_JOYSTICK}="1", ENV{ID_INPUT_KEYBOARD}="0", ENV{ID_INPUT_KEY}="0" +SUBSYSTEM=="input", KERNEL=="event*", ACTION=="add", ATTRS{name}=="ASD JammASD Player 2", ENV{ID_INPUT_JOYSTICK}="1", ENV{ID_INPUT_KEYBOARD}="0", ENV{ID_INPUT_KEY}="0" diff --git a/package/jammasd/Config.in b/package/jammasd/Config.in new file mode 100644 index 0000000000..ad1e6463a8 --- /dev/null +++ b/package/jammasd/Config.in @@ -0,0 +1,3 @@ +config BR2_PACKAGE_JAMMASD + bool "jammasd" + select BR2_PACKAGE_EVSIEVE diff --git a/package/jammasd/jammasd b/package/jammasd/jammasd new file mode 100644 index 0000000000..3935dc7fea --- /dev/null +++ b/package/jammasd/jammasd @@ -0,0 +1,46 @@ +#!/bin/sh + +nohup evsieve --input "${1}" persist=exit \ +--map key:f2 btn:base \ +--map key:5 btn:select \ +--map key:1 btn:start \ +--map key:up:1 abs:hat0y:-1 \ +--map key:up:0 abs:hat0y:0 \ +--block key:up:2 \ +--map key:down:1 abs:hat0y:1 \ +--map key:down:0 abs:hat0y:0 \ +--block key:down:2 \ +--map key:left:1 abs:hat0x:-1 \ +--map key:left:0 abs:hat0x:0 \ +--block key:left:2 \ +--map key:right:1 abs:hat0x:1 \ +--map key:right:0 abs:hat0x:0 \ +--block key:right:2 \ +--map key:leftshift btn:north \ +--map key:z btn:west \ +--map key:x btn:tl \ +--map key:leftctrl btn:south \ +--map key:leftalt btn:east \ +--map key:space btn:tr \ +--output name="ASD JammASD Player 1" btn:base btn:select btn:start abs:hat0y abs:hat0x btn:north btn:west btn:tl btn:south btn:east btn:tr \ +--map key:9 btn:select \ +--map key:2 btn:start \ +--map key:r:1 abs:hat0y:-1 \ +--map key:r:0 abs:hat0y:0 \ +--block key:r:2 \ +--map key:f:1 abs:hat0y:1 \ +--map key:f:0 abs:hat0y:0 \ +--block key:f:2 \ +--map key:d:1 abs:hat0x:-1 \ +--map key:d:0 abs:hat0x:0 \ +--block key:d:2 \ +--map key:g:1 abs:hat0x:1 \ +--map key:g:0 abs:hat0x:0 \ +--block key:g:2 \ +--map key:w btn:north \ +--map key:i btn:west \ +--map key:k btn:tl \ +--map key:a btn:south \ +--map key:s btn:east \ +--map key:q btn:tr \ +--output name="ASD JammASD Player 2" btn:select btn:start abs:hat0y abs:hat0x btn:north btn:west btn:tl btn:south btn:east btn:tr & diff --git a/package/jammasd/jammasd.mk b/package/jammasd/jammasd.mk new file mode 100644 index 0000000000..8fe6e2c219 --- /dev/null +++ b/package/jammasd/jammasd.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# jammasd +# +################################################################################ + +JAMMASD_VERSION = 1 +JAMMASD_LICENSE = GPL2 + +define JAMMASD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(BR2_EXTERNAL_RECALBOX_PATH)/jammasd/99-jammasd.rules $(TARGET_DIR)/etc/udev/rules.d/99-jammasd.rules + $(INSTALL) -m 0755 -D $(BR2_EXTERNAL_RECALBOX_PATH)/jammasd/jammsd $(TARGET_DIR)/usr/bin/jammasd +endef + +$(eval $(generic-package)) -- GitLab