Hi!
After long time using WinVICE I learned mapping its keyboard emulated machines.
All was clear - used were scancodes.
Worst thing now is that if I want to have new GTK3 VICE with all new features, I cannot map its emulated machines keyboard.
Why? Answer is simplest like can be: using keywords for mapping is the worst choice!
Do you think that VICE are using only English, German and several other countries users?
Really don't know how to name my Slovak keyboard key, example:
ô (here I don't know if it will be visible like our letter uo)
name it: uo
or uuoo
or U_with_reversed_hacek
????
Really don't know how to name keys other countries, even Japanese or Eastern Asian.
Please go back to scancode mapping 'cause there is any number exact key without possible exchange.
Or, if you want to leave current format, create Keyboard Layout Editor - but for each machine specific...
If I could to make choice then is my choice here:
Why to creating else one application? It is easy to add option to mapping menu:
o Use backward compatible scancode mapping
...
Thank you for understanding.
Mio
"Please go back to scancode mapping "
thats not possible. scancodes are host OS specific, and they dont exist in GTK, GTK uses the literal names
Ok, so create also maps for Eastern European countries, but that's from me not fair - create maps for ~200 countries...
I know, irony, but then it needs keyboard layout editor.
It is not enough to have symbolic_US and symbolic_DE
I know that there few others, but each is from the west - Western European.
Of course, we were not in course until 1989.
Miro
we create maps for what we are using, the rest is up to the users - as it always was the case.
feel free to provide a map for whatever keyboard you are using.
Ok, I was searching for GTK3 key values/names bit, and found this:
gdk_keyval_name ()
gchar* gdk_keyval_name (guint keyval);
Converts a key value into a symbolic name. The names are the same as those in the <gdk gdkkeysyms.h=""> header file but without the leading "GDK_".
keyval : a key value.
Returns : a string containing the name of the key, or NULL if keyval is not a valid key. The string should not be modified.</gdk>
gdk_keyval_from_name ()
guint gdk_keyval_from_name (const gchar *keyval_name);
Converts a key name to a key value.
keyval_name : a key name.
Returns : the corresponding key value, or GDK_VoidSymbol if the key name is not a valid key.
Helps it to convert value to name and back?
Really I never used GTK3, but if it helps, I'll be happy.
Miro
there is no point in "convert value to name and back", use the names from the mentioned gdkkeysyms.h (easy enough to find on google)
I tried all possible - but if is not enough to enter keyname, how to map it?
Example:
Plus key I map to Plus and works.
But I map Slovak ň key to equal sign it works not... Even, numbers 0-9 are mapped and working only shifted - why: 'cause number keys have default national letters and shifted have number function...
It looks like if key has not the same function, it will not work.
So, have I remap whole keyboad for example in AHK script?
Really can work - but it's no good way - no everybody knows AHK and even no each is scripting friendly...
So, how really map anything in GTK3 version of VICE?
I think best way is to use backward compatibility with WinVICE...
Miro
I got one way how to have mapped GTK3 version correctly:
I added US layout to my language bar in Windows and I switch layout when req'd.
So, I set positional keymap and switched - works.
But is this way good? NO! For impossible mapping GTK3 version I must to add another layout to my Windows - I think I must to forgot VICE. Think about, I think I'm not only one angry man.
Miro
I did infact add the features needed to add all possible mappings with any kind of modifiers last week or so. see the german keymap for examples. there is also an option to display the respective scancodes and modifiers in the statusbar now, so you dont have to look up those on the internet.
@MIRKOSOFT
I did this sort of mapping for the Swedish keyboard which is now added to the official standard keymap. TRhese are the lower case ones:
aring 6 2 1 / Swe fix - å /
adiaeresis 5 5 1 / Swe fix - ä /
odiaeresis 6 0 0 / Swe fix - ö /
First; the assumption is that you use a US Kernal. If you use a local Kernal you are screwed. The way VICE does it's keyboard emulation is to poke DC00/DC01 using a hardcoded assumption of a US kernal keyboard matrix.
Second: You can add all and any local chars into the standard VICE keymap that are presentable using the font you have in the emulated machine.
Have a look here: https://www.x.org/releases/X11R7.7/doc/libX11/i18n/compose/iso8859-15.html
The chars I added are taking keypresses for å, ä and ö on my PC, and insering them as per the three numbers. These are formally translated to the DC00/DC01 combinations for ],[ and £, which are the characters that are redrawn in the swedish version of the font.
Please mind: There is absolutely no point in adding support for chars that the emulated machine can't show.
More details on the subject: http://bergatrollet.se/blog/2019/10/the-c64-keyboard/