The api for interacting with `libinput_macros.nro`, along with the releases of the plugin.

Overview

Input Macros Plugin and API

This plugin and related API implements a mechanism of assigning a complex series of button inputs and stick positions to a specific macro button, such as left or right dpad. When triggered, a defined macro will override all inputs for the specified series of frames.

Online Disclaimer

This plugin will not function in any online matches.

Plugin Usage

Simply place a populated macros.json file at the root of your SD card (the specific name macros.json is important), along with libinput_macros.nro in the skyline plugins directory. If reload is enabled, feel free to reload the json file at runtime with the plus (+) button.

API Usage

Currently, this crate only exposes the macro structure definitions, so that other applications can parse the recorded macros and/or write their own. Over time various exposed functions will be added to control macro playback/recording, for novel uses like TAS and recording/playback. (Training Modpack, is that you?)

Examples

The ewgf.json file in the /examples/ folder is an example of macroing EWGF on DpadLeft and DpadRight.

See here for example files.

JSON spec

The spec for allowed json values is as follows:

Top Level Config

"enabled": true/false

  • this will enable or disable the macro plugin. If no file is present, macros are disabled by default.

"reload": true/false

  • When enabled, this allows you to reload the json file on-demand when the start button is pressed, while still in a match.

"macros": []

  • this is a json list of macro definitions

Macro Definitions

"name": "my macro name"

  • this field lets you name the macro, just for convenience. It is otherwise unused.

"trigger": {}

  • this field is the trigger info for the macro.

"steps": []

  • this is a json list of macro steps

Trigger Definitions

"action": "DpadRight"

  • this is the input action that will trigger the macro. Currently, only the following buttons are allowed:
    • "DpadRight"
    • "DpadLeft"
    • "DpadUp"
    • "DpadDown"
    • "LeftStick"
    • "RightStick"
    • "ButtonA"
    • "ButtonB"
    • "ButtonX"
    • "ButtonY"
    • "ButtonZL"
    • "ButtonZR"
    • "ButtonR"
    • "ButtonL"

"kind": "Holding"

  • this optional field represents what kind of input will trigger this macro. Options are:
    • "Holding" : If the input is currently being held, the macro will trigger (this is the default)
    • "JustPressed" : If the input was just pressed this frame, the macro will trigger
    • "JustReleased" : If the input was just released this frame (negative edge), the macro will trigger

Step Definitions

"hold_frames": 3

  • this optional field (defaults to 1) represents the number of frames a step will be held

"sticks: {}

  • this optional field represents the Sticks positions to override for this frame. If not present, the stick positions will not be modified, and the player's real stick positions will be used.

"buttons": ["Attack", "Special"]

  • this is a json list of Button names to output on this frame. The allowed values are as follows
    • Attack
    • Special
    • Jump
    • Guard
    • Catch
    • Smash
    • JumpMini
    • CStickOn
    • StockShare
    • AttackRaw
    • AppealHi
    • SpecialRaw
    • AppealLw
    • AppealSL
    • AppealSR
    • FlickJump
    • GuardHold
    • SpecialRaw2
    • SpecialAll
    • AttackAll
    • AppealAll

Sticks Definitions

"lstick_x": 0

  • this is the left stick X position to output on this frame (-128 to 127). This value is flipped if "auto_flip_x" is true.

"lstick_y": 0

  • this is the left stick Y position to output on this frame (-128 to 127)

"rstick_x": 0

  • this is the right stick X position to output on this frame (-128 to 127). This value is flipped if "auto_flip_x" is true.

"rstick_y": 0

  • this is the right stick Y position to output on this frame (-128 to 127)
You might also like...
Simple RESTful API in rust created with actix-web. (Routing, models, JWT auth).

rust-simple-api Simple RESTful API created with rust, actix-web, Diesel, JWT. Running application Manual Firstly generate a secret.key which will be u

A asynchronous implementation of the invidious innertube aka youtubei API wrapper

A asynchronous implementation of the invidious innertube aka youtubei API wrapper. Using tokio,reqwest, serde and serde_json

The second Rust implementation on GitHub of third-party REST API client for Bilibili.

Bilibili REST API The second Rust implementation on GitHub of third-party REST API client for Bilibili. Designed to be lightweight and efficient. It's

Simple Rust 🦀 api with Rocket 🚀

Car API Written in Rust & Rocket.rs 🦀 🚀 Running project Running by cargo You just need to run the following command: cargo run Running on docker Fi

API for the creation character based games in Linux.
API for the creation character based games in Linux.

Console Game Engine for Linux. API for the creation of character based games in Linux. The inspiration came from the olcConsoleGameEngine. This is my

Rust wrapper for the LeapC Ultraleap (Leap Motion) hand tracking device API.

LeapRS LeapRS is a safe wrapper for LeapC, the Leap Motion C API. It uses the generated binding provided by leap-sys. This is an API for accessing Lea

API and logger for GBFS endpoints, noticeably Velib' in Paris

GBFS Watcher A daemon which logs Velib' stations statuses and provides a REST endpoint to access data. Velib' API is built over GBFS v1, so this API c

The utility is designed to check the availability of peers and automatically update them in the Yggdrasil configuration file, as well as using the admin API - addPeer method.

Yggrasil network peers checker / updater The utility is designed to check the availability of peers and automatically update them in the Yggdrasil con

🔥Implemetación de una API REST basada en microservicios con Rust
🔥Implemetación de una API REST basada en microservicios con Rust

Microservicios 🚀 Breve Descripción Bienvenido a todos, aquí aprenderás a programar una API REST desde cero enfocada a la aquitectura de microservicio

Releases(v0.2.0)
Owner
null
Code to follow along the "Zero To Production" book on API development in Rust.

Zero To Production / Code (Chapter 10 - Part 1) Zero To Production In Rust is an opinionated introduction to backend development using Rust. This repo

Luca Palmieri 2.8k Dec 31, 2022
Rust lib for fetching official protoc (Protocol Buffer compiler) releases

protoc-fetcher Rust library for fetching official Protocol Buffer compiler (protoc) releases, pegged to a specific version. protoc-fetcher downloads a

Arcanyx Technical Wizardry LLC 2 Sep 5, 2022
Omeglib, a portmanteau of "omegle" and "library", is a crate for interacting with omegle, simply and asynchronously

Omeglib, a portmanteau of "omegle" and "library", is a crate for interacting with omegle, simply and asynchronously. It is intended to suit one's every requirement regarding chat on omegle.

null 1 May 25, 2022
Uma lib para a API do Brasil API (para o Rust)

Uma lib para a API do BrasilAPI (para o Rust) Features CEP (Zip code) DDD Bank CNPJ IBGE Feriados Nacionais Tabela FIPE ISBN Registros de domínios br

Pedro Augusto 6 Dec 13, 2022
A cargo plugin for showing a tree-like overview of a crate's modules.

cargo-modules Synopsis A cargo plugin for showing an overview of a crate's modules. Motivation With time, as your Rust projects grow bigger and bigger

Vincent Esche 445 Jan 3, 2023
Rust library for hardware accelerated drawing of 2D shapes, images, and text, with an easy to use API.

Speedy2D Hardware-accelerated drawing of shapes, images, and text, with an easy to use API. Speedy2D aims to be: The simplest Rust API for creating a

null 223 Dec 26, 2022
An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous and blocking clients respectively.

eithers_rust An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous a

null 2 Oct 24, 2021
Interact with the crate's API

cargo-crate-api Interact with the crate's API Documentation Installation Getting Started Reference FAQ Contribute CHANGELOG Install Download a pre-bui

null 7 Aug 9, 2022
Conversion Tools API Rust client

ConversionTools Rust This Conversion Tools API Rust client allows you to use the site API and convert files faster and more conveniently. Site Convers

WinsomeQuill 2 Jan 23, 2022
Public aircraft & flightroute api Built in Rust for Docker, using PostgreSQL & Redis

api.adsbdb.com public aircraft & flightroute api Built in Rust for Docker, using PostgreSQL & Redis See typescript branch for original typescript vers

Jack Wills 66 Dec 22, 2022