diff --git a/Config.in b/Config.in index 7b3dcecf852a58c90e7987787dde45827c77435d..5825735cba3e20168bbb5042c63b9f2ea606f94f 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 3a5d48c2d4ac4d0ca433fb5fe0c73cf8b95e1000..68f6e87854a6a9f91706f4cdf661ac8b03ba5e3c 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 0000000000000000000000000000000000000000..8e22b80a8b017e0e6c05f19c6e55e40de5eafa06 --- /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 0000000000000000000000000000000000000000..5e3bec4fb9095d62b008fa9c5e06a5ed59d3cd3e --- /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 0000000000000000000000000000000000000000..fd2896a64104af3f143eebaca7f8413b6c202b52 --- /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 0000000000000000000000000000000000000000..ad1e6463a8a81b46ab7912458c6171dfc7773ab3 --- /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 0000000000000000000000000000000000000000..3935dc7fea36cca96029b6e02980fad19881a506 --- /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 0000000000000000000000000000000000000000..8fe6e2c219af6946e66e6216af16b9b3ae75bb81 --- /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))