Bluetooth keyboard and iCade controllers not working (build date Nov 8, 2015)

bluetooth keyboard and icade controller aren’t being detected by retroarch. none of the key commands work and i can’t remap or rebind keys because it never detects the keyboard or controller. the input driver is set for cocoa and i know the devices are connected because i can type in the apple notes app and have characters appear just fine. this is on iOS 9.1 and a nonjailbroken device so i can’t use controller for all or btstack. i am trying to use regular bluetooth. are regular bluetooth devices not supported on non-jailbroken devices? do i have to edit the retroarch.cfg file to somehow enable bluetooth keyboards and controllers or something?

I can only test on an iPega pad. If I set it to keyboard mode then I can get it working. In the other modes I can’t.

I cannot speak for other pads since I don’t own them.

[QUOTE=Twinaphex;30858]I can only test on an iPega pad. If I set it to keyboard mode then I can get it working. In the other modes I can’t.

I cannot speak for other pads since I don’t own them.[/QUOTE]

Are there any plans on fixing BTstack/CFA compatibility with Retroarch on iOS 9? I’m using a PS3 controller and analogs do not function at all in-game. Also for some reason Start and Select both get registered as the same thing, button 3, yet neither function works even if only one is bound.

[QUOTE=Twinaphex;30858]I can only test on an iPega pad. If I set it to keyboard mode then I can get it working. In the other modes I can’t.

I cannot speak for other pads since I don’t own them.[/QUOTE]

did you get it to work in keyboard mode by using CFA or something else because i can’t mine to work in keyboard mode because retroarch doesn’t recognize any key presses. same goes with a regular bluetooth keyboard. i don’t have a jailbroken phone so i can only use the native bluetooth and not CFA. right now if i connect a bluetooth controller or a bluetooth keyboard and try to do a key bind it just does a countdown and ignores any input i attempted.

Check the latest nightly, I added two new options - ‘Keyboard Gamepad Mapping Enable’ (this basically means iCade mode - leave this on) and 'Keyboard Gamepad Mapping Ty’e (there are two options here right now - iPega PG-9017 and 8bitty).I tested it with an iPega PG-9017 in iCade mode and it worked there.

I could possibly add more iCade configurations if people give me the key listings for each new iCade pad.

[QUOTE=Twinaphex;30908]Check the latest nightly, I added two new options - ‘Keyboard Gamepad Mapping Enable’ (this basically means iCade mode - leave this on) and 'Keyboard Gamepad Mapping Ty’e (there are two options here right now - iPega PG-9017 and 8bitty).I tested it with an iPega PG-9017 in iCade mode and it worked there.

I could possibly add more iCade configurations if people give me the key listings for each new iCade pad.[/QUOTE]

thanks for your help. I updated to the latest nightly and I see both of those options. I tried both the iPega and the 8bitty options, and neither worked with my icade controller or my bluetooth keyboard. i figured my bluetooth controller would not work since it isn’t an ipega or 8bitty, but i thought at least one key on the bluetooth keyboard would work. i pressed every key on the keyboard and nothing registered a response.

the controller i am trying to use is a SNES30 8Bitdo controller and i tried it in both keyboard and icade mode. I am not sure what you mean by key listing, but this is what gets output to a text file when i press keys on the controller when connected thru bluetooth.

up = we down = xz left = aq right = dc select = lv start = og a = uf b = hr x = jn y = yt L button = kp R button = im

the bluetooth keyboard is a Logitech Ultrathin Keyboard. am i wrong in thinking that at least one key would have registered an action from the bluetooth keyboard since it would cover all possible keystrokes?

[QUOTE=i415206;30913]thanks for your help. I updated to the latest nightly and I see both of those options. I tried both the iPega and the 8bitty options, and neither worked with my icade controller or my bluetooth keyboard. i figured my bluetooth controller would not work since it isn’t an ipega or 8bitty, but i thought at least one key on the bluetooth keyboard would work. i pressed every key on the keyboard and nothing registered a response.

the controller i am trying to use is a SNES30 8Bitdo controller and i tried it in both keyboard and icade mode. I am not sure what you mean by key listing, but this is what gets output to a text file when i press keys on the controller when connected thru bluetooth.

up = we down = xz left = aq right = dc select = lv start = og a = uf b = hr x = jn y = yt L button = kp R button = im

the bluetooth keyboard is a Logitech Ultrathin Keyboard. am i wrong in thinking that at least one key would have registered an action from the bluetooth keyboard since it would cover all possible keystrokes?[/QUOTE]

Tell me of which of those key pairs are the ‘release’ and ‘pressed’ ones, and I will implement a profile first thing tomorrow. For instance:

up = we

One of these is ‘pressed’, one of these is ‘release’. I need to know which ones.

I’m actually having the same problem. I have the iPega 9017 and am unable to get any response in Retroarch from any key presses.

Is there a way to run the C code through the debugger in Xcode? I wanted to test to see if I was even getting into handle_icade_event

[QUOTE=Twinaphex;30917]Tell me of which of those key pairs are the ‘release’ and ‘pressed’ ones, and I will implement a profile first thing tomorrow. For instance:

up = we

One of these is ‘pressed’, one of these is ‘release’. I need to know which ones.[/QUOTE]

The first letter is pressed and the second is release so for up, “w” is pressed and "e is released. Hope that helps.

[QUOTE=vinikun;30937]I’m actually having the same problem. I have the iPega 9017 and am unable to get any response in Retroarch from any key presses.

Is there a way to run the C code through the debugger in Xcode? I wanted to test to see if I was even getting into handle_icade_event[/QUOTE]

I’m worried that this is part of my problem since even a keyboard registers no input and i would think something would have triggered.

[QUOTE=vinikun;30937]I’m actually having the same problem. I have the iPega 9017 and am unable to get any response in Retroarch from any key presses.

Is there a way to run the C code through the debugger in Xcode? I wanted to test to see if I was even getting into handle_icade_event[/QUOTE]

Yes there is.

Can you come on IRC (freenode) to the channel #retroarch? Send me a PM there (I hang out there as Twinaphex) and I’ll walk you through where to set the breakpoints in order to debug button presses with iCade.

Also, this is a general iCade issue which is not really our fault - you need to set the language on your iOS device to English otherwise the iCade pad gets assigned a different keymapping and the default configurations might no longer work then.

[QUOTE=i415206;30939]The first letter is pressed and the second is release so for up, “w” is pressed and "e is released. Hope that helps.

I’m worried that this is part of my problem since even a keyboard registers no input and i would think something would have triggered.[/QUOTE]

Are you sure you are getting no button press responses? Go to Input Settings, turn off ‘Keyboard Gamepad Mapping Enable’, go to Input User 1 Binds, click on any button there, and press a button on your device then. If it responds to this button press and it shows some keyboard character, then it shows that your pad at least works.

I added the SNES30 8bitdo mappings now in any case. Should be in a nightly real soon.

I toggled the setting you mentioned and i get no response. what happens is i click on a button in the input user 1 bind, a message displays that says to press a button on the keyboard or joypad and it counts down. during this time i’ve tried pressing the button, holding the button down, tapping the button repeatedly, and it never registers. that’s what i’ve meant when i said i get no button press responses. and this isn’t just on the pad i’m using but on a plain bluetooth keyboard. the pad and the bluetooth keyboard work and work great in other apps and an emulator like provenance or idos 2 but Retroarch doesn’t seem to recognize any button presses on a bluetooth keyboard or a gamepad. thats why i’ve asked if bluetooth just won’t work on non-jailbroken devices using the normal bluetooth and not CFA or something. I’ve also tried connecting the bluetooth devices before opening Retroarch and after opening it and there’s no difference in the problem.

thanks for all your help so far.

I don’t think any of my devices are non-jailbroken. I also don’t think Controllers For All has any impact on this at all. I have it disabled when I connect it with the iPega pad.

All I can tell you is that this iPega pad works for me and it’s the only iCade compatible pad I can test. I tested it on an iPad Mini 2 (jailbroken) and an iPhone 5 (jailbroken). Both are on iOS 8.4. 'll test it later on an iPhone 4s which is also jailbroken. If it works on those all then I don’t know what your problem is. Maybe you haven’t set the pad to iCade mode properly?

Anyway, I have to say, I’d rather you guys were on IRC instead of here because you cannot really debug things like this in non-realtime. It is just very backwards to have to wait for posts on here and then make a response to it. I’d also like more devs with rudimentary C/ObjC skills to take a look into the codebase since I don’t know everything about iOS development obviously and I can only test on jailbroken devices.

EDIT: Works on the iPhone 4S too.

[QUOTE=Twinaphex;30962]I don’t think any of my devices are non-jailbroken. I also don’t think Controllers For All has any impact on this at all. I have it disabled when I connect it with the iPega pad.

All I can tell you is that this iPega pad works for me and it’s the only iCade compatible pad I can test. I tested it on an iPad Mini 2 (jailbroken) and an iPhone 5 (jailbroken). Both are on iOS 8.4. 'll test it later on an iPhone 4s which is also jailbroken. If it works on those all then I don’t know what your problem is. Maybe you haven’t set the pad to iCade mode properly?

Anyway, I have to say, I’d rather you guys were on IRC instead of here because you cannot really debug things like this in non-realtime. It is just very backwards to have to wait for posts on here and then make a response to it. I’d also like more devs with rudimentary C/ObjC skills to take a look into the codebase since I don’t know everything about iOS development obviously and I can only test on jailbroken devices.

EDIT: Works on the iPhone 4S too.[/QUOTE] Hi twinaphex, have you started working on PS3/PS4 controller, I think these the most widely used controllers available out there, it would be awesome if you can get the analogs working again, the weird thing is it’s working in the white menu, but not in the UI mode, or in game , I wish if you could focus on that, thank you for the amazing emulator.

UI mode is going away. The guy who wrote it takes forever to fix the bugs left in it and I fear he simply is never going to do it. Only the current MaterialUI and other GL-based menus will remain. They will obviously be improved functionality wise but I don’t think we should waste any more time on UI (Cocoa) mode.

Well, I could never get it working on my non-jailbroken devices. I did dig out an old iOS device that was on 8.4 and I jailbroke it and I was able to get both my icade controller and my bluetooth keyboard to work with retroarch but only after installing btstack from cydia, and i was even able to get a ps3 controller working using controllers for all. i suppose that btstack from cydia has something to do with it since i can’t install that on a non-jailbroken device and you have been able to get your stuff working on jailbroken devices. i guess that explains why i can use my controller and bluetooth keyboard in literally every app on a non-jailbroken device except retroarch and that i can enter input from my controller and external bluetooth in every app except retroarch.

if i ever get this working i will update this thread. i’m glad i was able to help a little bit by helping with the snes30 controller. i hope that helps others.

one last update. i borrowed the same version of the Pegi controller you have from a coworker (lucky) and it doesn’t work as well so i still think this is because you have jailbroken devices. as soon as retroarch is launched the bluetooth controller seems to lose connection to the phone or something. and as soon as retroarch quits the controller regains a connection or at least works again.

there is just no way to get bluetooth to work with retroarch unless you are jailbroken for some reason and whatever that reason is. in case anyone is not jailbroken and cant get bluetooth to work this is why.

I solved it. Finally.

search the iOS Xcode project for “btstack” and you’ll get 4 results. the first two relate to the custom compiler flags for Apple LLVM 7.0 in the retroarch project. If you delete the reefernce to -DHAVE_BTSTACK for both debug and release, bluetooth will work for non-jailbroken devices. Everything works, except I can’t get PSX games to recognize the analog sticks, but i can bind them for whatever reason. Other than that, all controller buttons work. So, in a way, i was right that it is btstack’s fault and it is looking for jailbroken devices having btstack installed.

Yippie!

I’m still having issues getting my iCade controller working. I have an NES30 8bitdo on an iPad Air running jailbroken iOS 9.0.2. I am using the latest Cydia nightly 11/30/2015. My controller is recognized by the OS but no button presses appear to register. Keyboard game pad mapping is enable.