keymap_input_md.c
来自「This is a resource based on j2me embedde」· C语言 代码 · 共 268 行
C
268 行
/* * * * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */#include <kni.h>#include <keymap_input.h>#include <midp_logging.h>/** * @file * * Platform key mapping and input mode handling functions. * * This file contains all the platform input related * code, including all the key binding functions. *//** * Platform specific code to name mapping table. */static const KeymapKey Keys[] = { {KEYMAP_KEY_POWER, "POWER" }, /* 0 */ {KEYMAP_KEY_SOFT1, "SOFT1" }, /* 1 */ {KEYMAP_KEY_SOFT2, "SOFT2" }, /* 2 */ {KEYMAP_KEY_UP, "Up" }, /* 3 */ {KEYMAP_KEY_DOWN, "Down" }, /* 4 */ {KEYMAP_KEY_LEFT, "Left" }, /* 5 */ {KEYMAP_KEY_RIGHT, "Right" }, /* 6 */ {KEYMAP_KEY_SELECT, "Select" }, /* 7 */ {KEYMAP_KEY_SEND, "Send" }, /* 8 */ {KEYMAP_KEY_END, "End" }, /* 9 */ {KEYMAP_KEY_CLEAR, "Clear" }, /* 10 */ {KEYMAP_KEY_1, "1" }, /* 11 */ {KEYMAP_KEY_2, "2" }, /* 12 */ {KEYMAP_KEY_3, "3" }, /* 13 */ {KEYMAP_KEY_4, "4" }, /* 14 */ {KEYMAP_KEY_5, "5" }, /* 15 */ {KEYMAP_KEY_6, "6" }, /* 16 */ {KEYMAP_KEY_7, "7" }, /* 17 */ {KEYMAP_KEY_8, "8" }, /* 18 */ {KEYMAP_KEY_9, "9" }, /* 19 */ {KEYMAP_KEY_ASTERISK, "*" }, /* 20 */ {KEYMAP_KEY_0, "0" }, /* 21 */ {KEYMAP_KEY_POUND, "#" }, /* 22 */ {KEYMAP_KEY_GAMEA, "Calendar" }, /* 23 */ {KEYMAP_KEY_GAMEB, "Addressbook" }, /* 24 */ {KEYMAP_KEY_GAMEC, "Menu" }, /* 25 */ {KEYMAP_KEY_GAMED, "Mail" }, /* 26 */ {KEYMAP_KEY_SPACE, "Space" }, /* 27 */ {KEYMAP_KEY_BACKSPACE, "BackSpace" }, /* 28 */ /** * These set of keys and the key events available to a * CustomItem for UP, DOWN, LEFT and RIGHT game actions. * This is different from what is available on a Canvas. * In this particular case the system has traversal so the system uses * directional keys for traversal. * This is the mapping between key codes and UP, DOWN, LEFT and RIGHT * game actions in a CustomItem. */ /* GAME KEY_UP CustomItem KEY_UP */ {KEYMAP_KEY_GAME_UP, "SHIFT_UP" }, /* 29 */ /* GAME KEY_DOWN CustomItem KEY_DOWN */ {KEYMAP_KEY_GAME_DOWN, "SHIFT_DOWN" }, /* 30 */ /* GAME KEY_LEFT CustomItem KEY_LEFT */ {KEYMAP_KEY_GAME_LEFT, "SHIFT_LEFT" }, /* 31 */ /* GAME KEY_RIGHT CustomItem KEY_RIGHT */ {KEYMAP_KEY_GAME_RIGHT, "SHIFT_RIGHT" }, /* 32 */ /* Indicator of end of table */ {KEYMAP_KEY_INVALID, "" }, /* 33 */};/** * Return the key code corresponding to the given abstract * game action. * * @param gameAction game action value */int keymap_get_key_code(int gameAction){ REPORT_CALL_TRACE1(LC_LOWUI, "LF:keymap_get_key_code(%d)\n", gameAction); switch (gameAction) { case 1: /* Canvas.UP */ return KEYMAP_KEY_UP; case 6: /* Canvas.DOWN */ return KEYMAP_KEY_DOWN; case 2: /* Canvas.LEFT */ return KEYMAP_KEY_LEFT; case 5: /* Canvas.RIGHT */ return KEYMAP_KEY_RIGHT; case 8: /* Canvas.FIRE */ return KEYMAP_KEY_SELECT; case 9: /* Canvas.GAME_A */ return KEYMAP_KEY_GAMEA; case 10: /* Canvas.GAME_B */ return KEYMAP_KEY_GAMEB; case 11: /* Canvas.GAME_C */ return KEYMAP_KEY_GAMEC; case 12: /* Canvas.GAME_D */ return KEYMAP_KEY_GAMED; default: return 0; }}/** * Return the abstract game action corresponding to the * given key code. * * @param keyCode key code value */int keymap_get_game_action(int keyCode){ REPORT_CALL_TRACE1(LC_LOWUI, "LF:keymap_get_game_action(%d)\n", keyCode); switch (keyCode) { case KEYMAP_KEY_UP: case KEYMAP_KEY_GAME_UP: /* Customitem Game UP */ return 1; /* Canvas.UP */ case KEYMAP_KEY_DOWN: case KEYMAP_KEY_GAME_DOWN:/* Customitem Game DOWN */ return 6; /* Canvas.DOWN */ case KEYMAP_KEY_LEFT: case KEYMAP_KEY_GAME_LEFT:/* Customitem Game LEFT */ return 2; /* Canvas.LEFT */ case KEYMAP_KEY_RIGHT: case KEYMAP_KEY_GAME_RIGHT:/* Customitem Game RIGHT */ return 5; /* Canvas.RIGHT */ case KEYMAP_KEY_SELECT: return 8; /* Canvas.FIRE */ case KEYMAP_KEY_GAMEA: case KEYMAP_KEY_1: return 9; /* Canvas.GAME_A */ case KEYMAP_KEY_GAMEB: case KEYMAP_KEY_3: return 10; /* Canvas.GAME_B */ case KEYMAP_KEY_GAMEC: case KEYMAP_KEY_7: return 11; /* Canvas.GAME_C */ case KEYMAP_KEY_GAMED: case KEYMAP_KEY_9: return 12; /* Canvas.GAME_D */ default: if(keymap_is_invalid_key_code(keyCode)) { /* Invalid key code */ return -1; } /* No game action available for this key */ return 0; }}/** * Return the system key corresponding to the given key * code. * * @param keyCode key code value */intkeymap_get_system_key(int keyCode){ REPORT_CALL_TRACE1(LC_LOWUI, "LF:keymap_get_system_key(%d)\n", keyCode); switch (keyCode) { case KEYMAP_KEY_POWER: return 1; case KEYMAP_KEY_SEND: return 2; case KEYMAP_KEY_END: return 3; case KEYMAP_KEY_BACKSPACE: case KEYMAP_KEY_CLEAR: return 4; case KEYMAP_KEY_SELECT: return 5; default: return 0; }}/** * Return the key string to the given key code. * * @param keyCode key code value * * @return C pointer to char or NULL if the keyCode does not * correspond to any name. */char *keymap_get_key_name(int keyCode){ KeymapKey *map; REPORT_CALL_TRACE1(LC_LOWUI, "LF:keymap_get_key_name(%d)\n", keyCode); for (map = (KeymapKey *)Keys; map->keyCode != KEYMAP_KEY_INVALID; map++) { if (map->keyCode == keyCode) { return map->name; } } return 0;}/** * Return whether the keycode given is correct for * this platform. * * @param keyCode key code value */jbooleankeymap_is_invalid_key_code(int keyCode){ REPORT_CALL_TRACE1(LC_LOWUI, "LF:keymap_is_invalid_key_code(%d)\n", keyCode); /* * Valid within UNICODE and not 0x0 and 0xffff * since they are defined to be invalid */ if ((keyCode <= 0x0) || (keyCode >= 0xFFFF) ) { return KNI_TRUE; } return KNI_FALSE;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?