Software Keyboard Not Implemented Workaround?


#1

Hi to all!I read that software keyboard is not emulated yet…but there is a way to bypass this problem?


#2

From my knowledge, there is no way to get past the software keyboard. Perhaps dumping your save game past the point that the keyboard is required?


Everything named Citra
#3

Yes,it would work but the software keyboard is important to continue the game…anyway it means i’ll wait.


#4

I wrote the code for it, but its not in any build yet as far as I know. I’ll be fixing it up eventually and it’ll be in a build after its fixed up.


#5

Fantastic! Good job! :smiley:


#7


#8

What, is this fixed now? Otherwise, I have a workaround in my mind.

I think it would be nice if a new Qt msgbox appears asking the user to enter text. That text could then be sent to the game instead of “Citra”.


Example :

Now :

  1. Game asks for software keyboard.
  2. The program send back “Citra”.

Then :

  1. Game asks for software keyboard
  2. Citra pauses emulation
  3. A new Qt dialog box opens, asking user to enter text.
  4. User enters : “abcd123Q”
  5. Bingo ! Program resumes emulation, sends “abcd123Q” to the game, which parses it.

Can this be implemented ? I am currently working on the code.


[DEV] Can anyone point out where
#9

this is a little more complicated than you are making it out to be. this would involve setting up a callback from the frontend to the core that the service would need to call. This callback would need to handle all of the different parameters that the software keyboard does including things like configurable buttons, filtered input, and a software callback to run after the input is sent. A lot of people just assume the software keyboard is just “Type in whatever here” but it does much more than that.

also this is likely to get bikeshedded even if you did it well. While I personally am not opposed to having a callback for applets so we can do cool things like a qt dialog for the software keyboard, I know from personal experience that there are other devs who don’t like that idea. We only have one other callback system in core right now and thats for telemetry. the right approach is to use HID to receive input and draw on the buffer thats already setup there.

probably whats the best way to go about this is to make a 3ds homebrew application that acts like the software keyboard. citra is almost ready to launch applets like the software keyboard through LLE, but it would be nice to have a redistributable software keyboard that everyone can use.


#10

I know exactly where to find that.

Link removed by Moderator due to copyrighted material.

Needs to be redumped from a cfw 3ds however.
Can anyone do a dump to .3dsx or any Citra readable format ? My 3DS is broken… :cry:

This is in .3dsx, .cxi, & .elf …


#11

Anyways, should I do it & open a PR ?


#12

I’d never seen that before but thats actually really cool :slight_smile: You shouldn’t have to dump this person’s keyboard from a real 3ds. Citra can load .3dsx just fine. Also its source is available so you can build it with devKitPro

So theres three things that would have to happen for this persons software keyboard to be able to be used as the system keyboard.

  1. it’d have to actually work in citra (haven’t tested but it probably will)
  2. we’d need to change the code so it communicates with applications in the same way that the system software keyboard does
  3. we’d need subv to finish system applet LLE

then we would need to test to see if we can load it as if it was a system app :slight_smile:


#13

Hey, that’s open for downloads. How is that copyrighted ? Yeah it further links to copyrighted material, so, should I remove that part & post the open mirrors only ?


#14

I’m not sure what you’re asking, but that video is just a modification of Nintendo’s SWKBD. The system title is copyrighted, and so is any modification of it.


#15

Ok, I did not know that. Sorry to bother.


#16

im sorry if this is a necropost but i somehow manage to figure out a tad bit about making a sorta workaround with the unimplemented software keybord citra replacer text.

to make my story short, it start with a money cheat for story of seasons 1(EUR in my case) using cheat engine. once you made your money cheat, try to access its memory viewer and you will see somehwere on the right side corner of the hex editor a text something like C.i.t.r.a which is actually your player name. yo edit your name simply change the text to whatever you want but please do keep in mind to follow the format of adding a dot every other letter and i dunno how much letter you can use. i also have to point out that

  1. you should look higher up(earlier in the hex stack) to see both the original name of your character and your selected name. there should be a randomizing number somewhere close but dont change it.

  2. try as i might using this method, i cant find the farm name thats why i called it sorta workaround.

if things work as it is, im assuming that somewhere in the citra code, there is a line that state that when a software keyboard prompt was detected, fill it with “Citra”(a lone text that cant be change as it was hardcoded) or fill it with vartext(a supposedly variable containing the text “Citra”) that replaces the text to whatever inside that string variable. if its the latter then we can actually make a sort of renamer hack that works like a trainer if its a variable but if its the former, it would be impossible.


#17

It is currently hard-coded. There have been attempts at both implementing this properly, and workarounds, but none have been merged yet.


#18

so my assumptions were right. its a lone text printed as “Citra” and not a variable containing the text “Citra” which would have been our ticket for a text replacer huh. no matter, what matter to me is if i can expand to what ive layed out already(using cheat engine as a text editor)