Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Diskussioner om mjukvara, emulatorer och BIOS-/ROM-/flash-filer

Moderatorer: Fanta_gbg, stonan, Zlasher

Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav MOB-i-L » 2 januari 2019, 19:22

Jag kör VIC 20 i Combian 64 (SDL VICE 3.1) och skulle vilja anpassa en vkm-fil till mitt svenska tangentbord. Finns det ett program som visar SDL-koderna när jag trycker på tangenter? Jag skulle t.ex. vilja att AltGr+8 sänder '[' och AltGr+9 sänder ']'. Hur åstadkommer jag detta? Jag har US locale nu och US-tangentbord utan döda tangenter är satt i Linux. Det finns en finsk vkm-fil för VIC20, men jag kunde inte skriva vissa viktiga tecken med den, trots att jag använde finsk locale och finskt tangentbord var satt. Filerna finns i /usr/local/lib/vice/VIC20: sdl_pos.vkm och sdl_pos_fi.vkm.

Jag lade till denna rad i sdl_pos.vkm, men den fungerar inte som den ska (inget händer vid AltGr+8):
56 5 5 257 /* AltGr+8 -> [ */

Om Combian 64:
https://cmaiolino.wordpress.com/
MOB-i-L
Nybörjare
Nybörjare
 
Inlägg: 17
Blev medlem: 2 maj 2010, 10:05

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav bjonte » 3 januari 2019, 07:37

Du kan byta plats på två tecken i vkm-filen först så att du vet att rätt fil används.

Jag kan bygga Vice för SDL och se om jag kan konfigurera något med alt-gr.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1569
Blev medlem: 17 april 2006, 23:12

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav bjonte » 3 januari 2019, 08:53

Det verkar som att SDL-implementationen i Vice inte stödjer kombinationer med specialtangenter. Informationen från SDL om specialtangenter går bara till "hotkeys" som kontrollerar Vice och inte till tangentbordsavläsningen. Värdet du satte (257) säger att en alternativ tangentbordslayout ska användas, det används för att C128 har två olika tangentbordsuppsättningar (C64 och C128) och alltså inget som har att göra med alt-tangenten. Om bara tangentbordsmodifierare skickats vidare till avläsningen av tangentbordet så hade det funkat att lägga till högre bitar i den vänstra kolumnen för att markera att det är en kombination, som man kan se i C64/sdk_hotkeys.vkm där det är mycket högre nummer. Tyvärr verkar detta inte funka i sdl_pos.vkm eller sdl_sym.vkm.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1569
Blev medlem: 17 april 2006, 23:12

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav MOB-i-L » 3 januari 2019, 14:53

Det var rätt vkm-fil jag ändrade ty '8' slutade att fungera helt i VIC-20 emuleringen.

Finns det inget SDL-program för Raspberry Pi Zero som visar koden för knappen som ska användas i vkm-filen?

Det finns xev för X.

På något sätt borde AltGr-koder kunna användas om man t.ex. väljer finskt locale och tangentbord i Linux och symboliskt tangentbord i VICE 3.1, ty då borde AltGr+8 skicka '['. I Linux har nästan alla knappar AltGr-koder och SDL verkar använda de symboliska koderna och inte skannkoderna.

THEC64 MINI klarar AltGr+koder, men har ej stöd för finskt/svenskt tangentbord, men spanskt är ganska likt.
MOB-i-L
Nybörjare
Nybörjare
 
Inlägg: 17
Blev medlem: 2 maj 2010, 10:05

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav bjonte » 3 januari 2019, 16:00

MOB-i-L skrev:Finns det inget SDL-program för Raspberry Pi Zero som visar koden för knappen som ska användas i vkm-filen?


Det finns ett C-program på https://www.libsdl.org/release/SDL-1.2.15/docs/html/guideinputkeyboard.html som kan printa tangentkoderna om du kompilerar det själv.

MOB-i-L skrev:På något sätt borde AltGr-koder kunna användas om man t.ex. väljer finskt locale och tangentbord i Linux och symboliskt tangentbord i VICE 3.1, ty då borde AltGr+8 skicka '['. I Linux har nästan alla knappar AltGr-koder och SDL verkar använda de symboliska koderna och inte skannkoderna.


Vad är det för AltGr-koder du menar?

Jag hävdar att det inte går att göra detta i Vice med SDL. Har du sett något som indikerar att det borde gå? Jag har läst i källkoden och hittar inget som tyder på att det skulle funka. Jag ska säga att jag inte har full koll på Vice så jag kanske missar något men i ui.c läses tangenterna:

Kod: Markera allt
while (SDL_PollEvent(&e)) {
        switch (e.type) {
            case SDL_KEYDOWN:
                ui_display_kbd_status(&e);
                retval = sdlkbd_press(SDL2x_to_SDL1x_Keys(e.key.keysym.sym), e.key.keysym.mod);
                break;


Här används symbolen för tangenten och dess modifierare. Men inne i sdlkbd_press verkar informationen om modifierare kastas bort (förutom i fallet med hotkeys).

Kod: Markera allt
ui_menu_action_t sdlkbd_press(SDLKey key, SDLMod mod)
{
    ui_menu_action_t i, retval = MENU_ACTION_NONE;
    ui_menu_entry_t *hotkey_action = NULL;

#ifdef SDL_DEBUG
    fprintf(stderr, "%s: %i (%s),%i\n", __func__, key, SDL_GetKeyName(key), mod);
#endif
    if (sdl_menu_state || (sdl_vkbd_state & SDL_VKBD_ACTIVE)) {
        if (key != SDLK_UNKNOWN) {
            for (i = MENU_ACTION_UP; i < MENU_ACTION_NUM; ++i) {
                if (sdl_ui_menukeys[i] == (int)key) {
                    retval = i;
                    break;
                }
            }
            if ((int)(key) == sdl_ui_menukeys[0]) {
                retval = MENU_ACTION_EXIT;
            }
        }
        return retval;
    }

    if ((int)(key) == sdl_ui_menukeys[0]) {
        sdl_ui_activate();
        return retval;
    }

    if ((hotkey_action = sdlkbd_get_hotkey(key, mod)) != NULL) {
        sdl_ui_hotkey(hotkey_action);
        return retval;
    }

    keyboard_key_pressed((unsigned long)key);
    return retval;
}


keyboard_key_pressed får bara symbolvärdet, inte modifierare. Sedan letar den i listan över mappade tangenter efter symbolen endast. Om man inte använder SDL däremot så funkar den symboliska avläsningen för att tangentkombinationen redan har översatts till det som står på tangenten innan uppslaget i tangenttabellen görs så då kommer [ på mitt tangentbord att bli [ på C64 med. Det är kanske det som C64 mini använder?
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1569
Blev medlem: 17 april 2006, 23:12

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav MOB-i-L » 4 januari 2019, 13:16

THEC64 MINI lär använda SDL VICE 2.4, men den är nog hackad, men källkoden (för åtminstone en tidigare firmware) finns på GitHub:
[url]https://github.com/Classicmods?utf8=✓&q=C64&type=&language=[/url]

Se t.ex. ES på och att Alt+8 ger '[' (AltGr fungerar som Alt här):
https://retrogames.biz/thec64-mini/keyboard/

Jag sökte efter hotkeys i Combian 64, men hittade det ej:
find / -name '*hotkeys*' 2>/dev/null
Inget hittas.

keyboard_key_pressed() verkar ha någon Alt-hantering:

https://github.com/Classicmods/C64_mini ... keyboard.c
MOB-i-L
Nybörjare
Nybörjare
 
Inlägg: 17
Blev medlem: 2 maj 2010, 10:05

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav bjonte » 4 januari 2019, 14:07

MOB-i-L skrev:THEC64 MINI lär använda SDL VICE 2.4, men den är nog hackad, men källkoden (för åtminstone en tidigare firmware) finns på GitHub:
[url]https://github.com/Classicmods?utf8=✓&q=C64&type=&language=[/url]

Se t.ex. ES på och att Alt+8 ger '[' (AltGr fungerar som Alt här):
https://retrogames.biz/thec64-mini/keyboard/

Det är konstigt detta. Jag skulle vilja se sdl_sym_es.vkm från THEC64. Koden på github ser ju typ likadan ut som den jag kollat i (3.3). De kallar filerna för 'sym' också där det uppenbart är 'pos' det borde vara.
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1569
Blev medlem: 17 april 2006, 23:12

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav MOB-i-L » 4 januari 2019, 22:50

Jag har inte öppnat min THEC64 Mini än och gjort något hack som gör att man kommer in i Linux, men jag ställde en fråga om vkm-filen här: http://thec64community.online/thread/282/sdl-sym-es-vkm
MOB-i-L
Nybörjare
Nybörjare
 
Inlägg: 17
Blev medlem: 2 maj 2010, 10:05

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav MOB-i-L » 18 januari 2019, 20:24

Jag har lyckats skaffa filerna nu genom att logga in i THEC64 MINI med FEL läge med Windows 10, enligt http://thec64community.online/thread/270/c64mini-mode-hack-uart-needed.

theC64-sym-ES.vkm:
Kod: Markera allt
# Spanish keyboard mapping

!INCLUDE theC64-sym-COMMON.vkm

# Alternative codes
3  5 6 264             /*        ALT+2 -> @                      */
4  1 0 257             /*        ALT+3 -> #                      */
6  6 0 264             /*        ALT+5 -> £                      */
9  5 5 257             /*        ALT+8 -> [                      */
10 6 2 257             /*        ALT+9 -> ]                      */
16 7 6 257             /*        ALT+Q -> [gchar shifted Q]      */
17 1 1 257             /*        ALT+W -> [gchar shifted W]      */
21 3 1 257             /*        ALT+Y -> [gchar shifted Y]      */
26 6 6 257             /*        ALT+` -> Pi                     */
27 5 0 289             /*        ALT++ -> [gchar shifted +]      */
27 6 1 257             /*  ALT+SHIFT++ -> [gchar shifted *]      */
30 1 2 257             /*        ALT+A -> [gchar shifted A]      */
44 1 4 257             /*        ALT+Z -> [gchar shifted Z]      */
50 4 4 257             /*        ALT+M -> [gchar shifted M]      */
53 5 3 257             /*        ALT+- -> [gchar shifted -]      */

# Regular codes
2  7 0 8               /*            1 -> 1            */
3  7 3 8               /*            2 -> 2            */
4  1 0 8               /*            3 -> 3            */
5  1 3 8               /*            4 -> 4            */
6  2 0 8               /*            5 -> 5            */
7  2 3 8               /*            6 -> 6            */
8  3 0 40              /*            7 -> 7            */
8  6 7 16              /*      SHIFT+7 -> /            */
9  3 3 8               /*            8 -> 8            */
10 4 0 8               /*            9 -> 9            */
11 4 3 40              /*            0 -> 0            */
11 6 5 16              /*      SHIFT+0 -> =            */
12 3 0 33              /*            ' -> '            */
12 6 7 1               /*      SHIFT+' -> ?            */
16 7 6 8               /*            Q -> Q            */
17 1 1 8               /*            W -> W            */
21 3 1 8               /*            Y -> Y            */
26 6 6 16              /*      SHIFT+` -> ^            */
27 5 0 40              /*            + -> +            */
27 6 1 16              /*      SHIFT++ -> *            */
30 1 2 8               /*            A -> A            */
44 1 4 8               /*            Z -> Z            */
50 4 4 8               /*            M -> M            */
51 5 7 40              /*            , -> ,            */
51 6 2 16              /*      SHIFT+, -> ;            */
52 5 4 40              /*            . -> .            */
52 5 5 16              /*      SHIFT+. -> :            */
53 5 3 8               /*            - -> -            */
86 5 7 33              /*            < -> <            */
86 5 4 1               /*      SHIFT+< -> >            */


theC64-sym-COMMON.vkm:
Kod: Markera allt
# Keyboard mappings common to all keyboards

!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
!SHIFTL LSHIFT

# Alternative codes
18 1 6 257             /*        ALT+E -> [gchar shifted E]      */
19 2 1 257             /*        ALT+R -> [gchar shifted R]      */
20 2 6 257             /*        ALT+T -> [gchar shifted T]      */
22 3 6 257             /*        ALT+U -> [gchar shifted U]      */
23 4 1 257             /*        ALT+I -> [gchar shifted I]      */
24 4 6 257             /*        ALT+O -> [gchar shifted O]      */
25 5 1 257             /*        ALT+P -> [gchar shifted P]      */
31 1 5 257             /*        ALT+S -> [gchar shifted S]      */
32 2 2 257             /*        ALT+D -> [gchar shifted D]      */
33 2 5 257             /*        ALT+F -> [gchar shifted F]      */
34 3 2 257             /*        ALT+G -> [gchar shifted G]      */
35 3 5 257             /*        ALT+H -> [gchar shifted H]      */
36 4 2 257             /*        ALT+J -> [gchar shifted J]      */
37 4 5 257             /*        ALT+K -> [gchar shifted K]      */
38 5 2 257             /*        ALT+L -> [gchar shifted L]      */
45 2 7 257             /*        ALT+X -> [gchar shifted X]      */
46 2 4 257             /*        ALT+C -> [gchar shifted C]      */
47 3 7 257             /*        ALT+V -> [gchar shifted V]      */
48 3 4 257             /*        ALT+B -> [gchar shifted B]      */
49 4 7 257             /*        ALT+N -> [gchar shifted N]      */
59 0 4 257             /*       ALT+F1 -> F2                     */
61 0 5 257             /*       ALT+F3 -> F4                     */
63 0 6 257             /*       ALT+F5 -> F6                     */
65 0 3 257             /*       ALT+F7 -> F8                     */

# Regular codes
1  7 7 8               /*          ESC -> Run/Stop     */
14 0 0 8               /*    Backspace -> Del          */
15 -3 0                /*          TAB -> Restore      */
18 1 6 8               /*            E -> E            */
19 2 1 8               /*            R -> R            */
20 2 6 8               /*            T -> T            */
22 3 6 8               /*            U -> U            */
23 4 1 8               /*            I -> I            */
24 4 6 8               /*            O -> O            */
25 5 1 8               /*            P -> P            */
28 0 1 8               /*       Return -> Return       */
29 7 2 8               /*    Left Ctrl -> Ctrl         */
31 1 5 8               /*            S -> S            */
32 2 2 8               /*            D -> D            */
33 2 5 8               /*            F -> F            */
34 3 2 8               /*            G -> G            */
35 3 5 8               /*            H -> H            */
36 4 2 8               /*            J -> J            */
37 4 5 8               /*            K -> K            */
38 5 2 8               /*            L -> L            */
41 7 1 8               /*            ` -> Left Arrow   */
42 1 7 2               /*   Left Shift -> Left Shift   */
45 2 7 8               /*            X -> X            */
46 2 4 8               /*            C -> C            */
47 3 7 8               /*            V -> V            */
48 3 4 8               /*            B -> B            */
49 4 7 8               /*            N -> N            */
54 6 4 4               /*  Right Shift -> Right Shift  */
55 6 1 8               /*     Keypad * -> *            */
56 -6 0                /*     Left Alt -> Left ALT     */
57 7 4 8               /*        Space -> Space        */
58 1 7 64              /*    Caps Lock -> Shift Lock   */
59 0 4 8               /*           F1 -> F1           */
60 0 4 1               /*           F2 -> F2           */
61 0 5 8               /*           F3 -> F3           */
62 0 5 1               /*           F4 -> F4           */
63 0 6 8               /*           F5 -> F5           */
64 0 6 1               /*           F6 -> F6           */
65 0 3 8               /*           F7 -> F7           */
66 0 3 1               /*           F8 -> F8           */
71 3 0 40              /*          KP7 -> 7            */
71 6 3 16              /*    SHIFT+KP7 -> HOME         */
72 3 3 40              /*          KP8 -> 8            */
72 0 7 1               /*    SHIFT+KP8 -> up           */
73 4 0 8               /*          KP9 -> 9            */
74 5 3 8               /*      KPMINUS -> -            */
75 1 3 40              /*          KP4 -> 4            */
75 0 2 1               /*    SHIFT+KP4 -> left         */
76 2 0 8               /*          KP5 -> 5            */
77 2 3 40              /*          KP6 -> 6            */
77 0 2 16              /*    SHIFT+KP6 -> right        */
78 5 0 8               /*       KPPLUS -> +            */
79 7 0 8               /*          KP1 -> 1            */
80 7 3 40              /*          KP2 -> 2            */
80 0 7 16              /*    SHIFT+KP2 -> down         */
81 1 0 8               /*          KP3 -> 3            */
82 4 3 40              /*          KP0 -> 0            */
82 0 0 1               /*    SHIFT+KP0 -> INST         */
83 5 4 40              /*        KPDOT -> .            */
83 0 0 16              /*  SHIFT+KPDOT -> DEL          */
96 0 1 8               /*      KPENTER -> RETURN       */
97 7 2 8               /*   Right Ctrl -> CTRL         */
98 6 7 8               /*     KPDIVIDE -> /            */
100 -6 1               /*    Right Alt -> Right ALT    */
102 6 3 8              /*         Home -> CLR/HOME     */
103 0 7 1              /*           Up -> CRSR UP      */
105 0 2 1              /*         Left -> CRSR LEFT    */
106 0 2 8              /*        Right -> CRSR RIGHT   */
108 0 7 8              /*         Down -> CRSR DOWN    */
110 0 0 1              /*          Ins -> Inst         */
111 0 0 8              /*          Del -> Del          */
117 6 5 8              /*     KPEQUALS -> =            */
119 7 7 8              /*        PAUSE -> RUNSTOP      */
121 5 7 8              /*      KPCOMMA -> ,            */
125 7 5 8              /*    left meta -> THEC64       */
126 7 5 8              /*   right meta -> THEC64       */
127 7 5 8              /*      compose -> THEC64       */

# Special codes for joystick buttons and virtual keyboard
150 6 0 8     /* £ */
151 7 6 8     /* Q */
152 1 1 8     /* W */
153 3 1 8     /* Y */
154 5 6 8     /* @ */
155 6 6 8     /* ^ */
156 1 2 8     /* A */
157 5 5 8     /* : */
158 6 2 8     /* ; */
159 1 4 8     /* Z */
160 4 4 8     /* M */
161 7 0 1     /* ! */
162 7 3 1     /* " */
163 1 0 1     /* # */
164 1 3 1     /* $ */
165 2 0 1     /* % */
166 2 3 1     /* & */
167 3 0 1     /* ' */
168 3 3 1     /* ( */
169 4 0 1     /* ) */
170 5 5 1     /* [ */
171 6 2 1     /* ] */
172 5 7 1     /* < */
173 5 4 1     /* > */
174 6 7 1     /* ? */
175 6 6 1     /* Pi */
MOB-i-L
Nybörjare
Nybörjare
 
Inlägg: 17
Blev medlem: 2 maj 2010, 10:05

Re: Svenskt tangentbord i Combian 64 (SDL VICE) för Raspberry Pi

Inläggav bjonte » 19 januari 2019, 12:46

Här ser det ju uppenbarligen ut som att 256 skulle ha betydelsen av att alt-tangenten hålls ned. Jag undrar om det är så det var i gamla Vice, om de har ändrat Vice eller om jag har förstått koden fel (det tror förstås inte jag men det har hänt förr såklart).
Användarvisningsbild
bjonte
Stormästare
Stormästare
 
Inlägg: 1569
Blev medlem: 17 april 2006, 23:12


Återgå till Mjukvara exkl. spel & prog.-verktyg

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst

Banners

BOA Japon Mediapalatset Nostalgibutiken
Quartex Retro Overlays Retroplay Spel och sånt
Super Motaro Söders Serie & Skivhandel vintagegames.se RG 2016
cron