MissingNO123/GCIR

ImportError: No module named TPPFLUSH.tppflush

Closed this issue · 23 comments

The title says it all. When running it, it gives that error. I'm on Mac.
EDIT: WHAT THE HELL? When I dropped the image into the selection box, it...well it uploaded screenshots of a reddit post about TheCruel.

Let's try again:

screen shot 2017-10-04 at 19 05 20

This isn't an issue, you're missing the TPPFLUSH folder. Please download the zip file from the Releases Page

Oh, I had downloaded the source by mistake, which had the TPPFLUSH @somelongnumber folder. Thanks, that hadn't occurred to me.

It still happens, using the release.
Image:
screen shot 2017-10-05 at 07 24 48

What version of Python do you have installed? You need Python v3.6 or higher.
Check with python --version because even if you have python3 installed, the command line can sometimes use python2

Ah, I see. Thanks. I'll check when I'm home and have access to my Mac.

It's working! But, when I try to add ZL to the list of KeyBinds,
please wait...
Traceback (most recent call last):
File "gamepad.py", line 21, in
HIDButtons.ZL,
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/enum.py", line 324, in
__ getattr __
raise AttributeError(name) from None
AttributeError: ZL
Same for ZR. I know it doesn't really matter since I'm on o3DS, but I want to have the triggers bound to something, even if it won't do anything, so that if I accidentally press one it'll just do nothing rather than having the program freak out and crash because it had no binding.

ZL and ZR are part of the N3DS_Buttons class (as they're not technically HID buttons) so you'd have to map them as N3DS_Buttons.ZR / .ZL

Thanks! I'm having the same issue with POWER and HOME.

POWER and HOME are under Special_Buttons

I see. Thanks.

Is there a way to have it, when a button is held, it sends the input over and over? Your program can tell when a button has been released, so I'm sure that's not too hard. Knowing python, I'll see if I can program it in. If I'm successful. I'll fork it.

Is there a way to have it, when a button is held, it sends the input over and over? Your program can tell when a button has been released, so I'm sure that's not too hard. Knowing python, I'll see if I can program it in. If I'm successful. I'll fork it.

I have had partial success, but there are some issues that I don't quite understand. Namely, whenever I press a button, it says "Pressed Button {button}" a ton and then gives me a buffer error.
screen shot 2017-10-06 at 10 05 08
I encircled in black what I changed and encircled in red what I thought was causing the issue.

You're sending button inputs too fast, it's overloading whatever buffer Python is using for the socket connection.

Though, you did remind me that I forgot to make it optional whether it shows which gamepad buttons are pressed.

I see. Is there a way to get it to "hold" a button instead of well, spamming it?

server.press(buttonMappings[event.button])
server.send(print_bytes)

Don't use the server.unpress() function since that un-presses the button.

Alright. Thanks.

Is there a way to massively expand/allocate more memory to buffer size?

Just so you know, if you repeat the server.send() inside a while loop, like you're doing now, you'll quickly overload the buffer and it won't press multiple times. The way InputRedirection works, a server.send() makes the 3DS keep pressing whatever configuration of buttons is sent until a new send() comes along, so send()ing a second time without pressing/unpressing any new buttons will do nothing.

If you want to press a button repeatedly, you'll want to use server.press(), server.send(), wait a little bit with time.sleep(), and then server.unpress() and server.send() before time.sleep()ing a bit more.

Yes, but is there a way to hold a button down?

Yes.

The way InputRedirection works, a server.send() makes the 3DS keep pressing whatever configuration of buttons is sent until a new send() comes along, so send()ing a second time without pressing/unpressing any new buttons will do nothing.

If you server.send() a button press, then wait 5 seconds without server.send()ing, the button will remain pressed for all 5 seconds. TPPFLUSH will keep holding the button until it is unpress()ed.

Oh. I see.