Skip to content

Instantly share code, notes, and snippets.

@dually8
Last active April 6, 2024 15:28
Show Gist options
  • Save dually8/822d336a9d9376226218a130018455f4 to your computer and use it in GitHub Desktop.
Save dually8/822d336a9d9376226218a130018455f4 to your computer and use it in GitHub Desktop.
For Adafruit Macropad RP2040
# Place in /macros directory of macropad storage
# e.g., H:/macros/helldivers2.py
# Credits: https://adafruit-playground.com/u/squid_jpg/pages/easy-helldivers-ii-stratagem-macros-for-rp2040-macropad
# Strategem List: https://www.stratagemhero.com/stratagems
# Macropad Project: https://learn.adafruit.com/macropad-hotkeys/project-code
# MACROPAD Hotkeys: Helldiver II
import random
from adafruit_hid.keycode import Keycode
START_INPUT_DELAY = 0.4
START_INPUT_DELAY_MIN = 0.4
START_INPUT_DELAY_MAX = 0.8
KEY_DELAY = 0.05
KEY_DELAY_MIN = 0.05
KEY_DELAY_MAX = 0.1
START_INPUT = Keycode.CONTROL
UP = Keycode.W
DOWN = Keycode.S
LEFT = Keycode.A
RIGHT = Keycode.D
YELLOW = 0x202000
BLUE = 0x000020
RED = 0x200000
GREEN = 0x002000
def stratagem(*argv):
start_delay = round(random.uniform(START_INPUT_DELAY_MIN, START_INPUT_DELAY_MAX), 2)
# keys = []
keys = [START_INPUT, start_delay]
# keys = [START_INPUT, START_INPUT_DELAY]
for key in argv:
start_key_delay = round(random.uniform(KEY_DELAY_MIN, KEY_DELAY_MAX), 2)
end_key_delay = round(random.uniform(KEY_DELAY_MIN, KEY_DELAY_MAX), 2)
keys += [key, start_key_delay, -key, end_key_delay]
# keys += [key, KEY_DELAY, -key, KEY_DELAY]
print(keys)
return keys
# Stratagem List
# From: https://github.com/byjokese/stratagem-hero/blob/61723dc92a19f6348ca219685326cb1b4a23a62c/src/app/data/stratagems.ts#L3
# https://stratagemhero.net/stratagems
class Stratagems():
# AC-8 Autocannon
AC_8_AUTOCANNON = (BLUE, "A-CAN", stratagem(DOWN, LEFT, DOWN, UP, UP, RIGHT))
# AD-334 Guard Dog
AD_334_GUARD_DOG = (BLUE, "M-GDOG", stratagem(DOWN, UP, LEFT, UP, RIGHT, DOWN))
# Anti-Personnel Minefield
ANTI_PERSONNEL_MINEFIELD = (GREEN, "MINES", stratagem(DOWN, LEFT, UP, RIGHT))
# APW-1 Anti-Materiel Rifle
APW_1_ANTI_MATERIEL_RIFLE = (BLUE, "MAT-RF", stratagem(DOWN, LEFT, RIGHT, UP, DOWN))
# ARC-3 Arc Thrower
ARC_3_ARC_THROWER = (BLUE, "ARC-T", stratagem(DOWN, RIGHT, DOWN, UP, LEFT, LEFT))
# Autocannon Sentry
AUTOCANNON_SENTRY = (GREEN, "A-SENT", stratagem(DOWN, UP, RIGHT, UP, LEFT, UP))
# AX/LAS-5 "Guard Dog" Rover
AX_LAS_5_GUARD_DOG_ROVER = (BLUE, "L-GDOG", stratagem(DOWN, UP, LEFT, UP, RIGHT, RIGHT))
# B-1 Supply Pack
B_1_SUPPLY_PACK = (BLUE, "S-PACK", stratagem(DOWN, LEFT, DOWN, UP, UP, DOWN))
# Eagle 110MM Rocket Pods
EAGLE_110MM_ROCKET_PODS = (RED, "E-110M", stratagem(UP, RIGHT, UP, LEFT))
# Eagle 500KG Bomb
EAGLE_500KG_BOMB = (RED, "E-500", stratagem(UP, RIGHT, DOWN, DOWN, DOWN))
# Eagle Airstrike
EAGLE_AIRSTRIKE = (RED, "E-AIR", stratagem(UP, RIGHT, DOWN, RIGHT))
# Eagle Cluster Bomb
EAGLE_CLUSTER_BOMB = (RED, "E-CBMB", stratagem(UP, RIGHT, DOWN, DOWN, RIGHT))
# Eagle Napalm Airstrike
EAGLE_NAPALM_AIRSTRIKE = (RED, "E-NAP", stratagem(UP, RIGHT, DOWN, UP))
# Eagle Rearm
EAGLE_REARM = (RED, "E-REAR", stratagem(UP, UP, LEFT, UP, RIGHT))
# Eagle Smoke Strike
EAGLE_SMOKE_STRIKE = (RED, "E-SMK", stratagem(UP, RIGHT, UP, DOWN))
# Eagle Strafing Run
EAGLE_STRAFING_RUN = (RED, "E-STR", stratagem(UP, RIGHT, RIGHT))
# EAT-17 Expendable Anti-Tank
EAT_17_EXPENDABLE_ANTI_TANK = (BLUE, "A-TNK", stratagem(DOWN, DOWN, LEFT, UP, RIGHT))
# EMS Mortar Sentry
EMS_MORTAR_SENTRY = (GREEN, "EMS-ST", stratagem(DOWN, UP, RIGHT, DOWN, RIGHT))
# EXO-45 Patriot Exosuit
EXO_45_PATRIOT_EXOSUIT = (GREEN, "P-EX", stratagem(LEFT, DOWN, RIGHT, UP, LEFT, DOWN, DOWN))
# FAF-14 Spear
FAF_14_SPEAR = (BLUE, "SPEAR", stratagem(DOWN, DOWN, UP, DOWN, DOWN))
# FLAM-40 "Incinerator" Flamethrower
FLAM_40_INCINERATOR_FLAMETHROWER = (BLUE, "FLMTR", stratagem(DOWN, LEFT, UP, DOWN, UP))
# Gatling Sentry
GATLING_SENTRY = (GREEN, "G-SENT", stratagem(DOWN, UP, RIGHT, LEFT))
# GL-21 Grenade Launcher
GL_21_GRENADE_LAUNCHER = (BLUE, "G-LNCH", stratagem(DOWN, LEFT, UP, LEFT, DOWN))
# GR-8 Recoilless Rifle
GR_8_RECOILLESS_RIFLE = (BLUE, "R-RFL", stratagem(DOWN, LEFT, RIGHT, RIGHT, LEFT))
# Hellbomb
HELLBOMB = (YELLOW, "HBOMB", stratagem(DOWN, UP, LEFT, DOWN, UP, RIGHT, DOWN, UP))
# HMG Emplacement
HMG_EMPLACEMENT = (GREEN, "HMG", stratagem(DOWN, UP, LEFT, RIGHT, RIGHT, LEFT))
# Incendiary Mines
INCENDIARY_MINES = (GREEN, "I-MIN", stratagem(DOWN, LEFT, LEFT, DOWN))
# LAS-98 Laser Cannon
LAS_98_LASER_CANNON = (BLUE, "L-CAN", stratagem(DOWN, LEFT, DOWN, UP, LEFT))
# LAS-99 Quasar Cannon
LAS_99_QUASAR_CANNON = (BLUE, "Q-CAN", stratagem(DOWN, DOWN, UP, LEFT, RIGHT))
# LIFT-850 Jump Pack
LIFT_850_JUMP_PACK = (BLUE, "J-PACK", stratagem(DOWN, UP, UP, DOWN, UP))
# M-105 Stalwart
M_105_STALWART = (BLUE, "STAL", stratagem(DOWN, LEFT, DOWN, UP, UP, LEFT))
# Machine Gun Sentry
MACHINE_GUN_SENTRY = (GREEN, "M-SENT", stratagem(DOWN, UP, RIGHT, RIGHT, UP))
# MG-43 Machine Gun
MG_43_MACHINE_GUN = (BLUE, "M-GUN", stratagem(DOWN, LEFT, DOWN, UP, RIGHT))
# Mortar Sentry
MORTAR_SENTRY = (GREEN, "MRT-SE", stratagem(DOWN, UP, RIGHT, RIGHT, DOWN))
# Orbital 120MM HE Barrage
ORBITAL_120MM_HE_BARRAGE = (RED, "O-120", stratagem(RIGHT, RIGHT, DOWN, LEFT, RIGHT, DOWN))
# Orbital 380MM HE Barrage
ORBITAL_380MM_HE_BARRAGE = (RED, "0-380", stratagem(RIGHT, DOWN, UP, UP, LEFT, DOWN, DOWN))
# Orbital Airburst Strike
ORBITAL_AIRBURST_STRIKE = (RED, "O-AIR", stratagem(RIGHT, RIGHT, RIGHT))
# Orbital EMS Strike
ORBITAL_EMS_STRIKE = (RED, "O-EMS", stratagem(RIGHT, RIGHT, LEFT, DOWN))
# Orbital Gas Strike
ORBITAL_GAS_STRIKE = (RED, "O-GAS", stratagem(RIGHT, RIGHT, DOWN, RIGHT))
# Orbital Gatling Barrage
ORBITAL_GATLING_BARRAGE = (RED, "O-GBAR", stratagem(RIGHT, DOWN, LEFT, UP, UP))
# Orbital Illumination Flare
ORBITAL_ILLUMINATION_FLARE = (YELLOW, "O-ILL", stratagem(RIGHT, RIGHT, LEFT, LEFT))
# Orbital Laser
ORBITAL_LASER = (RED, "O-LSR", stratagem(RIGHT, DOWN, UP, RIGHT, DOWN))
# Orbital Precision Strike
ORBITAL_PRECISION_STRIKE = (RED, "O-PS", stratagem(RIGHT, RIGHT, UP))
# Orbital Railcannon Strike
ORBITAL_RAILCANNON_STRIKE = (RED, "O-RAIL", stratagem(RIGHT, UP, DOWN, DOWN, RIGHT))
# Orbital Smoke Strike
ORBITAL_SMOKE_STRIKE = (RED, "O-SMK", stratagem(RIGHT, RIGHT, DOWN, UP))
# Orbital Walking Barrage
ORBITAL_WALKING_BARRAGE = (RED, "O-WBAR", stratagem(RIGHT, DOWN, RIGHT, DOWN, RIGHT, DOWN))
# Prospecting Drill
PROSPECTING_DRILL = (YELLOW, "P-DRL", stratagem(DOWN, DOWN, LEFT, RIGHT, DOWN, DOWN))
# Reinforce
REINFORCE = (YELLOW, "REINF", stratagem(UP, DOWN, RIGHT, LEFT, UP))
# Resupply
RESUPPLY = (YELLOW, "RESUP", stratagem(DOWN, DOWN, UP, RIGHT))
# Rocket Sentry
ROCKET_SENTRY = (GREEN, "R-SENT", stratagem(DOWN, UP, RIGHT, RIGHT, LEFT))
# RS-422 Railgun
RS_422_RAILGUN = (YELLOW, "RAIL", stratagem(DOWN, RIGHT, DOWN, UP, LEFT, RIGHT))
# SEAF Artillery
SEAF_ARTILLERY = (YELLOW, "SEAF", stratagem(RIGHT, UP, UP, DOWN))
# Seismic Probe
SEISMIC_PROBE = (YELLOW, "S-PRB", stratagem(UP, UP, LEFT, RIGHT, DOWN, DOWN))
# SH-20 Ballistic Shield Backpack
SH_20_BALLISTIC_SHIELD_BACKPACK = (YELLOW, "SHL-BK", stratagem(DOWN, LEFT, DOWN, DOWN, UP, LEFT))
# SH-32 Shield Generator Pack
SH_32_SHIELD_GENERATOR_PACK = (YELLOW, "SHL-GN", stratagem(DOWN, UP, LEFT, RIGHT, LEFT, RIGHT))
# Shield Generator Relay
SHIELD_GENERATOR_RELAY = (GREEN, "GEN-RL", stratagem(DOWN, DOWN, LEFT, RIGHT, LEFT, RIGHT))
# SOS Beacon
SOS_BEACON = (YELLOW, "SOS", stratagem(UP, DOWN, RIGHT, UP))
# Super Earth Flag
SUPER_EARTH_FLAG = (YELLOW, "FLAG", stratagem(DOWN, UP, DOWN, UP))
TESLA_TOWER = (GREEN, "T-TWR", stratagem(DOWN, UP, RIGHT, UP, LEFT, RIGHT))
UPLOAD_DATA = (YELLOW, "UPLD", stratagem(DOWN, DOWN, UP, UP, UP))
app = {
"name": "Helldivers II",
"macros": [
# COLOR LABEL KEY SEQUENCE
# 1st row ----------
Stratagems.REINFORCE,
Stratagems.RESUPPLY,
Stratagems.HELLBOMB,
# 2nd row ----------
Stratagems.MG_43_MACHINE_GUN,
Stratagems.AC_8_AUTOCANNON,
Stratagems.B_1_SUPPLY_PACK,
# 3rd row ----------
Stratagems.AX_LAS_5_GUARD_DOG_ROVER,
Stratagems.AD_334_GUARD_DOG,
Stratagems.ORBITAL_380MM_HE_BARRAGE,
# 4th row ----------
Stratagems.GATLING_SENTRY,
Stratagems.MACHINE_GUN_SENTRY,
Stratagems.AUTOCANNON_SENTRY,
# Encoder button ---
(0x000000, "", []),
],
}
@dually8
Copy link
Author

dually8 commented Apr 6, 2024

Revision 1 update:

  • Add a random delay (at least, whenever it's plugged in/restarted)
  • Add class enum so you don't have to copy/paste
  • Fixed a couple of bad macros

Tested on the stratagem hero website (from which the macro keys are taken)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment