?? keyboard.c
字號:
/** * Copyright (c) 2006-2008 iWESUN (ShenZhen) Inf. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY * OF SUCH DAMAGE. * * This file is part of the AvrcX MTOS * * Author: Winter Hu <winter.hu@gmail.com> * Create: Dec 26, 2006 */#include "keyboard.h"#include "avrcx.h"#if __KEYBOARD__ == 1KEYBOARD(keyboard);#define KBD_STATUS_NOKEY 0#define KBD_STATUS_DOWN 1#define KBD_STATUS_DOWN1 2#define KBD_STATUS_UP 3INTERFACE void init_keyboard(Driver* kbd, Driver* irc){ #if KEYBOARD_KBD == 1 keyboard.kbddrv = kbd; keyboard.kbddrv->_drv_init_hardware(); #endif #if KEYBOARD_IRC == 1 keyboard.ircdrv = irc; keyboard.ircdrv->_drv_init_hardware(); #endif}/** * Scan keyboard, this method should be invoked every 30ms * * @return unsigned char, The key value, if 0xFF, no key down */INTERFACE unsigned char kbd_getchar(void){ unsigned char key; #if KEYBOARD_KBD == 1 key = _kbd_getchar(keyboard)(); switch(keyboard.status){ case KBD_STATUS_NOKEY: if (key != keyboard.mask){ keyboard.mask = key; keyboard.status = KBD_STATUS_DOWN; key = 0xFF; } break; case KBD_STATUS_DOWN: if (key != keyboard.mask){ keyboard.mask = 0xFF; keyboard.status = KBD_STATUS_NOKEY; key = 0xFF; }else{ keyboard.status = KBD_STATUS_DOWN1; } break; case KBD_STATUS_DOWN1: if (key != keyboard.mask){ keyboard.status = KBD_STATUS_UP; key = keyboard.mask; } break; case KBD_STATUS_UP: if (key != keyboard.mask){ keyboard.status = KBD_STATUS_NOKEY; keyboard.mask = 0xFF; key = 0xFF; }else{ keyboard.status = KBD_STATUS_DOWN1; } break; } #endif #if KEYBOARD_IRC == 1 key = (key == 0xFF) ? _irc_getchar(keyboard)() : key; #endif return key;}#endif /* __KEYBOARD__ == 1 */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -