Annotation of previous/src/keymap.c, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari - keymap.c
                      3: 
                      4:   This file is distributed under the GNU Public License, version 2 or at
                      5:   your option any later version. Read the file gpl.txt for details.
                      6: 
                      7:   Here we process a key press and the remapping of the scancodes.
                      8: */
                      9: const char Keymap_fileid[] = "Hatari keymap.c : " __DATE__ " " __TIME__;
                     10: 
                     11: #include <ctype.h>
                     12: #include "main.h"
                     13: #include "keymap.h"
                     14: #include "configuration.h"
                     15: #include "file.h"
                     16: #include "shortcut.h"
                     17: #include "str.h"
                     18: #include "screen.h"
                     19: #include "debugui.h"
                     20: #include "log.h"
                     21: 
                     22: 
                     23: 
                     24: /*-----------------------------------------------------------------------*/
                     25: /**
                     26:  * User press key down
                     27:  */
                     28: void Keymap_KeyDown(SDL_keysym *sdlkey)
                     29: {
                     30:        bool bPreviousKeyState;
                     31:        char STScanCode;
                     32:        int symkey = sdlkey->sym;
                     33:        int modkey = sdlkey->mod;
                     34: 
                     35:        /*fprintf(stderr, "keydown: sym=%i scan=%i mod=$%x\n",symkey, sdlkey->scancode, modkey);*/
                     36: 
                     37:        if (ShortCut_CheckKeys(modkey, symkey, 1))
                     38:                return;
                     39: 
                     40: }
                     41: 
                     42: 
                     43: /*-----------------------------------------------------------------------*/
                     44: /**
                     45:  * User released key
                     46:  */
                     47: void Keymap_KeyUp(SDL_keysym *sdlkey)
                     48: {
                     49:        char STScanCode;
                     50:        int symkey = sdlkey->sym;
                     51:        int modkey = sdlkey->mod;
                     52: 
                     53:        /*fprintf(stderr, "keyup: sym=%i scan=%i mod=$%x\n",symkey, sdlkey->scancode, modkey);*/
                     54: 
                     55:        /* Ignore short-cut keys here */
                     56: 
                     57:        if (ShortCut_CheckKeys(modkey, symkey, 0))
                     58:                return;
                     59: 
                     60: 
                     61: }
                     62: 
                     63: /*-----------------------------------------------------------------------*/
                     64: /**
                     65:  * Simulate press or release of a key corresponding to given character
                     66:  */
                     67: void Keymap_SimulateCharacter(char asckey, bool press)
                     68: {
                     69:        SDL_keysym sdlkey;
                     70: 
                     71:        sdlkey.mod = KMOD_NONE;
                     72:        sdlkey.scancode = 0;
                     73:        if (isupper(asckey)) {
                     74:                if (press) {
                     75:                        sdlkey.sym = SDLK_LSHIFT;
                     76:                        Keymap_KeyDown(&sdlkey);
                     77:                }
                     78:                sdlkey.sym = tolower(asckey);
                     79:                sdlkey.mod = KMOD_LSHIFT;
                     80:        } else {
                     81:                sdlkey.sym = asckey;
                     82:        }
                     83:        if (press) {
                     84:                Keymap_KeyDown(&sdlkey);
                     85:        } else {
                     86:                Keymap_KeyUp(&sdlkey);
                     87:                if (isupper(asckey)) {
                     88:                        sdlkey.sym = SDLK_LSHIFT;
                     89:                        Keymap_KeyUp(&sdlkey);
                     90:                }
                     91:        }
                     92: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.