Changeset 81d7cdc in buchla-emu for emu


Ignore:
Timestamp:
09/09/2017 03:16:51 PM (7 years ago)
Author:
Thomas Lopatic <thomas@…>
Branches:
master
Children:
18cbd53
Parents:
1b30217
Message:

Support LCD buttons.

Location:
emu
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • emu/all.h

    r1b30217 r81d7cdc  
    6969extern uint32_t vid_win;
    7070extern uint32_t ser_win;
     71extern uint32_t lcd_win;
    7172
    7273extern void sdl_init(void);
     
    164165extern void kbd_write(uint32_t off, int32_t sz, uint32_t val);
    165166
    166 extern void kbd_key(SDL_KeyboardEvent *ev, bool dn);
     167extern void kbd_key(SDL_KeyboardEvent *ev, bool vid, bool dn);
  • emu/kbd.c

    r1b30217 r81d7cdc  
    119119#endif
    120120
    121 void kbd_key(SDL_KeyboardEvent *ev, bool dn)
     121static void vid_key(SDL_KeyboardEvent *ev, bool dn)
    122122{
    123123        if ((ev->keysym.mod & KMOD_SHIFT) != 0 &&
     
    173173}
    174174
     175static void lcd_key(SDL_KeyboardEvent *ev, bool dn)
     176{
     177        if ((ev->keysym.mod & KMOD_CTRL) != 0 &&
     178                        ev->keysym.sym >= SDLK_a && ev->keysym.sym <= SDLK_n) {
     179                int32_t i = ev->keysym.sym - SDLK_a;
     180                ver2("kbd lcd %d %s", i, dn ? "dn" : "up");
     181
     182                if (dn) {
     183                        but_on(39 + i);
     184                }
     185                else {
     186                        but_off(39 + i);
     187                }
     188        }
     189}
     190
     191void kbd_key(SDL_KeyboardEvent *ev, bool vid, bool dn)
     192{
     193        if (vid) {
     194                vid_key(ev, dn);
     195        }
     196        else {
     197                lcd_key(ev, dn);
     198        }
     199}
     200
    175201void kbd_init(void)
    176202{
  • emu/lcd.c

    r1b30217 r81d7cdc  
    6464
    6565static SDL_Window *win;
     66uint32_t lcd_win;
     67
    6668static SDL_Renderer *ren;
    6769static SDL_atomic_t frame;
     
    116118        for (int32_t y = 0; y < TXT_H; ++y) {
    117119                char line[TXT_W + 1];
     120                line[TXT_W] = 0;
    118121
    119122                if (SDL_LockMutex(cpu_mutex) < 0) {
     
    132135                        }
    133136                }
    134 
    135                 line[TXT_W] = 0;
    136137
    137138                SDL_Surface *lin = TTF_RenderText_Blended(fon, line, TXT_FGR);
     
    207208        }
    208209
     210        lcd_win = SDL_GetWindowID(win);
     211
     212        if (lcd_win == 0) {
     213                fail("SDL_GetWindowID() failed: %s", SDL_GetError());
     214        }
     215
    209216        ren = SDL_CreateRenderer(win, -1, 0);
    210217
  • emu/sdl.c

    r1b30217 r81d7cdc  
    161161                                }
    162162                                else if (win == vid_win) {
    163                                         kbd_key(&ev.key, true);
     163                                        kbd_key(&ev.key, true, true);
     164                                }
     165                                else if (win == lcd_win) {
     166                                        kbd_key(&ev.key, false, true);
    164167                                }
    165168
     
    171174
    172175                                if (win == vid_win) {
    173                                         kbd_key(&ev.key, false);
     176                                        kbd_key(&ev.key, true, false);
     177                                }
     178                                else if (win == lcd_win) {
     179                                        kbd_key(&ev.key, false, false);
    174180                                }
    175181
Note: See TracChangeset for help on using the changeset viewer.