I'm skeptical as to the need for a dedicated GUI for this, frankly.
Code:
[thomas@chansey ~/Documents/Projects/pkmn-macro]? python
Python 3.4.2 (default, Jan 12 2015, 11:38:40)
[GCC 4.9.2 20141224 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import codecs, pokemon
>>> codecs.register(pokemon.getregentry)
>>> "Hello, Pokécommunity!".encode("pokemon")
b'\xc2\xd9\xe0\xe0\xe3\xb8\x00\xca\xe3\xdf\x1b\xd7\xe3\xe1\xe1\xe9\xe2\xdd\xe8\xed\xab'
Here. It's in the public domain. It's not the best mapping in the world, but it's not my fault - the encoding Gamefreak used doesn't map cleanly onto Unicode. For example, Unicode has separate codepoints for apostrophe (U+0027) and closing single quote (U+2019), but Gamefreak use 0xB4 as both. I didn't want my codec to be non-bijective, so I don't encode U+0027 as 0xB4, which leads to behaviour that may look odd.
Code:
>>> "RIVAL's NAME?".encode("pokemon") # U+0027 APOSTROPHE
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/thomas/Documents/Projects/pkmn-macro/pokemon.py", line 8, in encode
return codecs.charmap_encode(input, errors, encoding_dict)
UnicodeEncodeError: 'charmap' codec can't encode character '\x27' in position 5: character maps to <undefined>
>>> "RIVAL's NAME?".encode("pokemon") # U+2019 RIGHT SINGLE QUOTATION MARK
b'\xcc\xc3\xd0\xbb\xc6\xb4\xe7\x00\xc8\xbb\xc7\xbf\xac'
>>> import unicodedata
>>> unicodedata.name("'")
'APOSTROPHE'
>>> unicodedata.name("'")
'RIGHT SINGLE QUOTATION MARK'
I also haven't added support for 0x53 through 0x59, because I'm not sure what the correct thing to do is. Use the private-use area? Decode e.g. 0x53 as U+1D3E U+1D0B?
The encoding of 0xFC through 0xFF is arbitrary and frankly not very good.