Initial commit — Elden Ring RL agent
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
40
input_driver.py
Normal file
40
input_driver.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from evdev import UInput, ecodes as e
|
||||
import time
|
||||
|
||||
class EldenController:
|
||||
def __init__(self):
|
||||
self.cap = {
|
||||
e.EV_KEY: [
|
||||
e.KEY_W, e.KEY_A, e.KEY_S, e.KEY_D,
|
||||
e.KEY_SPACE, e.KEY_E, e.KEY_R, e.KEY_Q, e.KEY_DOWN,
|
||||
e.BTN_LEFT, e.BTN_RIGHT
|
||||
],
|
||||
e.EV_REL: [e.REL_X, e.REL_Y]
|
||||
}
|
||||
self.ui = UInput(self.cap, name='EldenAI-DualController')
|
||||
|
||||
def move(self, direction):
|
||||
for key in [e.KEY_W, e.KEY_A, e.KEY_S, e.KEY_D]:
|
||||
self.ui.write(e.EV_KEY, key, 0)
|
||||
if direction == 1: self.ui.write(e.EV_KEY, e.KEY_W, 1)
|
||||
elif direction == 2: self.ui.write(e.EV_KEY, e.KEY_S, 1)
|
||||
elif direction == 3: self.ui.write(e.EV_KEY, e.KEY_A, 1)
|
||||
elif direction == 4: self.ui.write(e.EV_KEY, e.KEY_D, 1)
|
||||
self.ui.syn()
|
||||
|
||||
def look(self, x, y):
|
||||
self.ui.write(e.EV_REL, e.REL_X, int(x))
|
||||
self.ui.write(e.EV_REL, e.REL_Y, int(y))
|
||||
self.ui.syn()
|
||||
|
||||
def dodge(self): self.press(e.KEY_SPACE)
|
||||
def attack(self): self.press(e.BTN_LEFT)
|
||||
def use_item(self): self.press(e.KEY_R)
|
||||
def switch_item(self): self.press(e.KEY_DOWN)
|
||||
|
||||
def press(self, key, duration=0.05):
|
||||
self.ui.write(e.EV_KEY, key, 1)
|
||||
self.ui.syn()
|
||||
time.sleep(duration)
|
||||
self.ui.write(e.EV_KEY, key, 0)
|
||||
self.ui.syn()
|
||||
Reference in New Issue
Block a user