Implement keypad simulation
diff --git a/verilog/sim/main.cpp b/verilog/sim/main.cpp
index a7d33bd..b98ede5 100644
--- a/verilog/sim/main.cpp
+++ b/verilog/sim/main.cpp
@@ -296,6 +296,43 @@
                     // Break out of the loop on quit
                     running = false;
                 }
+                else if ((event.type == SDL_KEYDOWN) || (event.type == SDL_KEYUP)) {
+                    uint8_t keycode = 0;
+                    switch (event.key.keysym.sym){
+                        case SDLK_DOWN:
+                            keycode = 0x80;
+                            break;
+                        case SDLK_UP:
+                            keycode = 0x40;
+                            break;
+                        case SDLK_LEFT:
+                            keycode = 0x20;
+                            break;
+                        case SDLK_RIGHT:
+                            keycode = 0x10;
+                            break;
+                        case SDLK_z:
+                            keycode = 0x08;
+                            break;
+                        case SDLK_x:
+                            keycode = 0x04;
+                            break;
+                        case SDLK_a:
+                            keycode = 0x02;
+                            break;
+                        case SDLK_s:
+                            keycode = 0x01;
+                            break;
+                        default:
+                            break;
+                    }
+                    if (event.type == SDL_KEYDOWN) {
+                        core->key |= keycode;
+                    }
+                    else {
+                        core->key &= ~keycode;
+                    }
+                }
             }
             uint32_t ms_delta = SDL_GetTicks() - ms_tick;
             int sim_freq = sim_tick / ms_delta;