|
10 | 10 | #include "libs/strings.h"
|
11 | 11 | #include "arch/i686/serial_port.h"
|
12 | 12 | #include "keyboard.h"
|
| 13 | +#include "libs/disp.h" |
13 | 14 |
|
14 | 15 | #define INTERRUPTS_DESCRIPTOR_COUNT 256
|
15 | 16 | #define INTERRUPTS_KEYBOARD 33
|
16 | 17 | #define INTERRUPTS_TIMER 0
|
| 18 | +unsigned int BUFFER_COUNT; |
17 | 19 |
|
18 | 20 | struct IDTDescriptor idt_descriptors[INTERRUPTS_DESCRIPTOR_COUNT];
|
19 | 21 | struct IDT idt;
|
@@ -68,34 +70,50 @@ void interrupt_handler(__attribute__((unused)) struct cpu_state cpu, unsigned in
|
68 | 70 | switch (interrupt){
|
69 | 71 | case INTERRUPTS_KEYBOARD:
|
70 | 72 | scan_code = keyboard_read_scan_code();
|
| 73 | + //printf("%d",scan_code); |
71 | 74 | if (scan_code == 28) {
|
72 | 75 | printf("\n");
|
| 76 | + fb_write('\n',BUFFER_COUNT); |
73 | 77 | user_input(key_buffer);
|
74 | 78 | memcpy(prevComm,key_buffer,strlen(key_buffer)+1);
|
75 | 79 | key_buffer[0] = '\0';
|
76 | 80 | } else if (scan_code == 1) {
|
77 | 81 | printf("\n> ");
|
78 | 82 | key_buffer[0] = '\0';
|
| 83 | + scroll(1); |
79 | 84 | } else if (scan_code == 72) {
|
80 | 85 | memcpy(key_buffer,prevComm,strlen(key_buffer)+1);
|
| 86 | + move_curs(strlen(key_buffer)); |
81 | 87 | printf("%s",key_buffer);
|
82 | 88 | } else if (shift == 1) {
|
83 | 89 | if (scan_code==13) {scan_code = 78;}
|
84 | 90 | else if (scan_code==6) {scan_code = 84;}
|
85 | 91 | else if (scan_code==7) {scan_code = 85;}
|
86 | 92 | else if (scan_code==9) {scan_code = 86;}
|
| 93 | + else if (scan_code==2) {scan_code = 87;} |
| 94 | + else if (scan_code==43) {scan_code = 88;} |
87 | 95 | ascii = keyboard_scan_code_to_ascii(scan_code);
|
88 | 96 | append(key_buffer, ascii);
|
89 |
| - printf("%c",ascii); |
| 97 | + fb_write(ascii,BUFFER_COUNT); |
| 98 | + //printf("%c",ascii); |
90 | 99 | shift = 0;
|
91 | 100 | } else if (scan_code == 14) {
|
92 | 101 | backspace(key_buffer);
|
| 102 | + BUFFER_COUNT--; |
| 103 | + fb_clear(BUFFER_COUNT); |
93 | 104 | } else if (scan_code == 42) {
|
94 | 105 | shift = 1;
|
| 106 | + } else if (scan_code == 77) { |
| 107 | + |
| 108 | + } else if (scan_code == 75) { |
| 109 | + |
95 | 110 | } else if (scan_code <= KEYBOARD_MAX_ASCII) {
|
96 | 111 | ascii = keyboard_scan_code_to_ascii(scan_code);
|
97 | 112 | append(key_buffer, ascii);
|
98 |
| - printf("%c",ascii); |
| 113 | + fb_write(ascii,BUFFER_COUNT); |
| 114 | + //putc(ascii); |
| 115 | + BUFFER_COUNT++; |
| 116 | + //printf("%c",ascii); |
99 | 117 | }
|
100 | 118 | pic_acknowledge(interrupt);
|
101 | 119 |
|
|
0 commit comments