Re: [hatari-devel] Suggestion for enhanced keymap table format |
[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]
Hi, On 11.10.2021 9.59, Vincent Barrilliot wrote:
Thanks for having a look. It's a bit early Monday morning here and I'm not quite awake yet so I don't understand why I wrote that and your code looks better at first sight.
Thanks, I'll continue working based on that assumption, unless you'll mail me later otherwise.
The situation I know a situation that we have to handle is that, for exemple on French PC there are some keys that you can just press to get a character, while on the ST it requires shift or alt.For example, '_' you can get directly on the French PC but on the Atari it requires shift+'-'.So pressing _ results in a shift+'_'+unshift written to the IKBD.But if you press hold shift and press '_' on the PC then what shoud happen ? We have to write shift+'_' **but not 'unshift' because shift is still maintained**.This or the fact that if you keep "_" down I guess the trace message is there to flag up that case. That's why we have to keep track of how many times we "pressed" modifiers.
I'll document that somewhere in the code (in function or file comment, not inside function).
I don't have enough time this morning to reread the code in detail but if you read it along the lines of what I just explained, it may make more sense. I'll take a closer look tonight if you haven't told me it's all clear in the meantime.
I've already pushed several smaller commits based on your changes, but those do not have any functional changes yet. Rest I'm going to split / rewrite into following kind of commits: * Add your new ST scancode defines * Introduce the new structures & arrays, where SDL and ST codes are separate and have different array sizes, without multi-scancode support * Add multi-scancode support on top of that, plus parsing of the new mapping file format * Add examples I'll mail them here so that you and others can check/test that the code still works OK (I have not broken anything), before I push them to the repository. (Then I'll sync the ikbd.c & keymap.c ST scancode array sizes.) - Eero
Le 11/10/2021 à 01:39, Eero Tamminen a écrit :Hi Vincent,I've been going through changes in your pull request, splitting them into separate commitsand updating / improving things.However, there's one thing that I do not understand in your Keymap_KeyUp() changes:--------------------------------- if (Keyboard.KeyStates[scancode]) { LOG_TRACE(TRACE_KEYMAP," %02x was down, will be up'ed\n",scancode); Keyboard.KeyStates[scancode]--; IKBD_PressSTKey(scancode, false); } elseLOG_TRACE(TRACE_KEYMAP," %02x will be kept down (presses: %d)\n",scancode,Keyboard.KeyStates[scancode]);---------------------------------- You've changed Keyboard.KeyStates[] to keep status of how many presses each key ST key has gotten, not just whether it's down. But if it's zero (i.e. should be up), why you're outputting a trace message that says the key will still be kept down? Shouldn't it be rather: ---------------------------------- if (!Keyboard.KeyStates[scancode]) {Log_Printf(LOG_WARN, "key %02x got up event, although it's not down\n", scancode);continue; } if (--Keyboard.KeyStates[scancode]) {LOG_TRACE(TRACE_KEYMAP," %02x will be kept down (remaining presses: %d)\n",scancode, Keyboard.KeyStates[scancode]); continue; } LOG_TRACE(TRACE_KEYMAP,"key %02x was down, will be up'ed\n", scancode); IKBD_PressSTKey(scancode, false); ---------------------------------- ? - Eero On 12.1.2021 22.57, Vincent Barrilliot wrote:HelloI have refreshed my forked repo from the reference one, resolved conflicts, tested and created patch file again after having rebased.Kind regards Vinz On 10/01/2021 23:05, Eero Tamminen wrote:Hi, On 1/10/21 7:15 PM, Vincent Barrilliot wrote:Here is a quick demo: https://youtu.be/4qWL23X77aITo enable that, I selected the "keymap" Keyboard option with the updated doc/fr/clavier-exemple.txtThe patch is attached. I produced it using git format-patch master --stdout > improved-kbd-support.patchI'm not sure how to split that though, sorry! For next changes I will try to split things better.That's easiest if you commit your changes in small logical steps. It's much easier to afterwardsgroup small changes to larger ones, and skip ones that turned out to be non-relevant ones, with: git rebase -i <start commit> Than to split large changes into smaller ones afterwards.For this change I think it's much easier to read the keymap.c file as a whole.It still contains remains of SDL v1 support. Please rebase the changes to the latest Hatari code. - EeroOn 01/01/2021 10:15, Thomas Huth wrote:Am Tue, 3 Nov 2020 14:39:05 +0100 schrieb Nicolas Pomarède <npomarede@xxxxxxxxxxxx>:I just had a quick look, but the patch is indeed rather big. Any chanceLe 03/11/2020 à 14:24, Eero Tamminen a écrit :Hi, I did a diff between your and current keymap.c version (attached).Hi thanks for posting the diffFor your intended change to be reviewable, please split all non-functional & unrelated code changes (white space/indenting, const, ! -> ==0, type changes, commenting out trace outputs) to a separate patch, or remove them. Then either rebase your changes to latest Hatari git version of keymap.c, or otherwise make sure they apply and still work with it, before posting a patch / "git diff" against it.looking at the diff you posted, I don't see that much unrelated changes, there're a few indents changes here and there, but seeingthe patch is rather big it looks ok to me if some indents or some loglevels are changed to fit the patch, but nothing that seems to prevent from reviewing the changes. Also, keymap.c was last modified in dec 2019, so I guess the patch should apply to dev version without loosing code.As for reviewing/testing the patch itself, unfortunately I don't have time at the moment. Maybe Thomas can have a look at it if he got time.that you could split it up logically into more digestible parts (i.e.multiple patches)? Also, there are still cosmetic changes in here (likethe last hunk that changes "if (!keycode)" into "if (keycode == 0)" etc.) ... that really should either be dropped or put into separate clean-up patches.As a french user of Hatari, this looks like an interesting patch anyway, as some characters are indeed "hard" to enter by default.I have to say that I hardly use the keymapping stuff on my own, since the German keyboard layout is pretty similar to the US layout anywayand since I normally only edit my files on the host side and avoid texteditors in the emulated environment. So Nicolas, it would be great ifyou could have a look at these modifications if they make sense from aFrench keyboard user perspective. Thomas PS: Would it help if we'd remove the SDL1.2 support first? I guess keymap.c would be simplified quite a bit by that removal...
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |