?? 208e5ddb9a8f001d1bc0efe2c8487106
字號(hào):
#include "keyboard.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "altera_avalon_pio_regs.h"
#include "system.h"
#include "gui.h"
#include <stdio.h>
extern Player player;
void handle_keyboard_interrupts(void* context, alt_u32 id)
{
unsigned char i;
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEYBOARD_PIO_0_BASE, 0);
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEYBOARD_PIO_0_BASE, 0xff);
i = IORD_ALTERA_AVALON_PIO_DATA(KEYBOARD_PIO_0_BASE);
keyboard_action(i);
}
void init_keyboard_pio()
{
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEYBOARD_PIO_0_BASE, 0xff);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEYBOARD_PIO_0_BASE, 0x0);
alt_irq_register( KEYBOARD_PIO_0_IRQ, NULL, handle_keyboard_interrupts );
}
//Key_UP是鍵松開(kāi)標(biāo)識(shí),Shift是Shift鍵按下標(biāo)識(shí)
static unsigned char key_UP = 0;
//注意:如SHIFT+G為12H 34H F0H 34H F0H 12H,也就是說(shuō)shift的通碼+G的通碼+shift的斷碼+G的斷碼
void keyboard_action(unsigned char scanCode)
{
//當(dāng)鍵盤松開(kāi)時(shí)
if (!key_UP){
if(scanCode == 0xf0){ // 當(dāng)收到0xF0,key_UP置1表示斷碼開(kāi)始
key_UP = 1;
}
}
else{
key_UP = 0;
switch (scanCode){
case KEY_UP:
printf("UP\n");
break;
case KEY_DOWN:
printf("DOWN\n");
break;
case KEY_LEFT:
printf("LEFT\n");
break;
case KEY_RIGHT:
printf("RIGHT\n");
break;
case KEY_ENTER:
printf("ENTER\n");
break;
default:
break;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -