A project to implement a console using the Mbed using VGA for video output and a PS/2 keyboard for the input. The eventual goal is to also include tools for managing SD cards, and a semi-self-hosting programming environment.
Dependencies: PS2_MbedConsole fastlib SDFileSystem vga640x480g_mbedconsole lightvm mbed
MbedConsole is a cool little project to have a self-contained computer all on an Mbed. So far it has VGA and PS/2 support and can stand alone without a computer powering it. Next planned features are SD card support and a lightweight programmable VM complete with a file editor and self-hosted assembler.
You can view additional details about it at http://earlz.net/tags/mbedconsole
Diff: keyboard.cpp
- Revision:
- 12:3ee3062cc11c
- Parent:
- 11:fede136943a9
- Child:
- 16:370b9e559f92
--- a/keyboard.cpp Fri Sep 28 04:03:54 2012 +0000 +++ b/keyboard.cpp Fri Sep 28 04:35:00 2012 +0000 @@ -1,41 +1,8 @@ #include "mbedconsole.h" +#include "keyboard.h" /**This is basically a straight rip off of my x86 OS project AlloyOS. I just ported the keyboard driver from it cause it always treated me well**/ -#define KEYBOARD_DATAPIN p11 -#define KEYBOARD_CLOCKPIN p12 - -//how many keys the buffer can hold -#define KBD_BUFFER_SIZE 128 - -//key defines -#define LSHIFT_KEY 0x12 -#define RSHIFT_KEY 0x59 - -#define CTRL_KEY 0xF3 -#define ALT_KEY 0xF4 -#define CAPS_KEY 0x58 -#define NUM_KEY 0x77 -#define SCROLL_KEY 0xF7 -//#define F_BASE_KEY 0xFF //59 is F1, 60 is F2, and so on until F10 -#define HOME_KEY 0xFF -#define UP_KEY 0xFF -#define PAGE_UP_KEY 0xFF -#define LEFT_KEY 0xFF -#define RIGHT_KEY 0xFF -#define END_KEY 0xFF -#define DOWN_KEY 0xFF -#define PAGE_DOWN_KEY 0xFF -#define INSERT_KEY 0xFF -#define DEL_KEY 0xFF -#define F11_KEY 0xFF -#define F12_KEY 0xFF - -#define SCROLL_LED 1 -#define NUM_LED 2 -#define CAPS_LED 4 - - const char kbdus[0x84] = { 0, @@ -189,26 +156,6 @@ 0, //83 F7 }; - -typedef struct { - unsigned char caps; - unsigned char shift; - unsigned char scroll; - unsigned char num; - unsigned char ctrl; - unsigned char alt; -} -shift_locks; /*for simplicity and speed*/ - -extern volatile shift_locks kbd_shifts; - - -typedef struct { - uint16_t scancode; - uint8_t asci; -}kbd_key; - - PS2KB_INIT *ps2_kb_init; PS2KB *ps2_kb; @@ -218,8 +165,6 @@ volatile char pending_key=0; volatile uint8_t led_status=0; -void keyboard_callback(PS2KB kb, uint8_t val); - void keyboard_init() { keys=(kbd_key*)malloc(256*sizeof(kbd_key));