diff --git a/kernel/src/interrupts.rs b/kernel/src/interrupts.rs index f13705d..9e868ab 100644 --- a/kernel/src/interrupts.rs +++ b/kernel/src/interrupts.rs @@ -182,13 +182,24 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStac } KeyCode::ArrowLeft => { - #[cfg(debug_assertions)] - WRITER.lock().decrement_column_position(); + if unsafe { BUFFER_INDEX } > 0 { + WRITER.lock().decrement_column_position(); + + /* unsafe { + BUFFER_INDEX -= 1; + } + + print!(" "); + WRITER.lock().decrement_column_position(); */ + } } KeyCode::ArrowRight => { - #[cfg(debug_assertions)] - WRITER.lock().increment_column_position(); + let mut writer = WRITER.lock(); + + if writer.get_column_position() < unsafe { BUFFER_INDEX } { + writer.increment_column_position(); + } } _ => {} diff --git a/kernel/src/vga_buffer.rs b/kernel/src/vga_buffer.rs index 38dcf4d..ea0ffc1 100644 --- a/kernel/src/vga_buffer.rs +++ b/kernel/src/vga_buffer.rs @@ -232,6 +232,9 @@ impl Writer { self.column_position += 1; self.update_cursor(); } + pub fn get_column_position(&mut self) -> usize { + self.column_position + } } impl fmt::Write for Writer {