?? d035df289c8f001d1bc0efe2c8487106
字號:
#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>
#include "Player.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是鍵松開標識,Shift是Shift鍵按下標識
static unsigned char key_UP = 0;
//注意:如SHIFT+G為12H 34H F0H 34H F0H 12H,也就是說shift的通碼+G的通碼+shift的斷碼+G的斷碼
void keyboard_action(unsigned char scanCode)
{
//當鍵盤松開時
if (!key_UP){
if(scanCode == 0xf0){ // 當收到0xF0,key_UP置1表示斷碼開始
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;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -