From 12329f2d2227b6a23019dc3cda644a31d65d38b3 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Mon, 10 Feb 2025 15:00:26 +0300 Subject: [PATCH] ctrl + c terminates --- src/term.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/term.rs b/src/term.rs index 1713b84..4b328c6 100644 --- a/src/term.rs +++ b/src/term.rs @@ -1,7 +1,7 @@ use std::{error::Error, io::{stdout, Write}, sync::{atomic::AtomicUsize, Arc, RwLock}, time::Duration}; use colored::{Color, Colorize}; -use crossterm::{cursor::MoveLeft, event::{self, Event, KeyCode}, terminal::{disable_raw_mode, enable_raw_mode}, ExecutableCommand}; +use crossterm::{cursor::MoveLeft, event::{self, Event, KeyCode, KeyModifiers, ModifierKeyCode}, terminal::{disable_raw_mode, enable_raw_mode}, ExecutableCommand}; use regex::Regex; use crate::{config::Config, on_command, rac::send_message, ADVERTISEMENT, COLORED_USERNAMES, DATE_REGEX}; @@ -134,15 +134,19 @@ fn poll_events( stdout().lock().flush().unwrap(); } } + KeyCode::Esc => { + disable_raw_mode().unwrap(); + break; + } KeyCode::Char(c) => { + if event.modifiers.contains(KeyModifiers::CONTROL) && "zxcZXCячсЯЧС".contains(c) { + disable_raw_mode().unwrap(); + break; + } input.write().unwrap().push(c); write!(stdout(), "{}", c).unwrap(); stdout().lock().flush().unwrap(); } - KeyCode::Esc => { - disable_raw_mode().unwrap(); - break; - }, _ => {} } },