fix(input): read stdin with lock (#72)

* fix(input): lock stdin when reading and use its own buffer

* style(format): make rustfmt happy

* fix(ipc): add accidentally removed trait
This commit is contained in:
Aram Drevekenin 2020-11-29 19:12:19 +01:00 committed by GitHub
parent 9ad7b8a35e
commit ea549f151e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 926 additions and 988 deletions

View file

@ -1,5 +1,4 @@
/// Module for handling input
use std::io::Read;
use std::sync::mpsc::Sender;
use crate::os_input_output::OsApi;
@ -9,9 +8,8 @@ use crate::AppInstruction;
use crate::CommandIsExecuting;
struct InputHandler {
buffer: [u8; 10], // TODO: more accurately
mode: InputMode,
stdin: Box<dyn Read>,
os_input: Box<dyn OsApi>,
command_is_executing: CommandIsExecuting,
send_screen_instructions: Sender<ScreenInstruction>,
send_pty_instructions: Sender<PtyInstruction>,
@ -27,9 +25,8 @@ impl InputHandler {
send_app_instructions: Sender<AppInstruction>,
) -> Self {
InputHandler {
buffer: [0; 10], // TODO: more accurately
mode: InputMode::Normal,
stdin: os_input.get_stdin_reader(),
os_input,
command_is_executing,
send_screen_instructions,
send_pty_instructions,
@ -57,16 +54,10 @@ impl InputHandler {
assert_eq!(self.mode, InputMode::Normal);
loop {
self.buffer = [0; 10];
let _ = self
.stdin
.read(&mut self.buffer)
.expect("failed to read stdin");
match self.buffer {
[7, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
let stdin_buffer = self.os_input.read_from_stdin();
match stdin_buffer.as_slice() {
[7] => {
// ctrl-g
// debug_log_to_file(format!("switched to command mode"));
self.mode = InputMode::Command;
return;
}
@ -75,7 +66,7 @@ impl InputHandler {
.send(ScreenInstruction::ClearScroll)
.unwrap();
self.send_screen_instructions
.send(ScreenInstruction::WriteCharacter(self.buffer))
.send(ScreenInstruction::WriteCharacter(stdin_buffer))
.unwrap();
}
}
@ -92,15 +83,12 @@ impl InputHandler {
}
loop {
self.buffer = [0; 10];
let _ = self
.stdin
.read(&mut self.buffer)
.expect("failed to read stdin");
let stdin_buffer = self.os_input.read_from_stdin();
// uncomment this to print the entered character to a log file (/tmp/mosaic/mosaic-log.txt) for debugging
// debug_log_to_file(format!("buffer {:?}", self.buffer));
match self.buffer {
[7, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
// debug_log_to_file(format!("buffer {:?}", stdin_buffer));
match stdin_buffer.as_slice() {
[7] => {
// Ctrl-g
// If we're in command mode, this will let us switch to persistent command mode, to execute
// multiple commands. If we're already in persistent mode, it'll return us to normal mode.
@ -108,49 +96,47 @@ impl InputHandler {
InputMode::Command => self.mode = InputMode::CommandPersistent,
InputMode::CommandPersistent => {
self.mode = InputMode::Normal;
// debug_log_to_file(format!("switched to normal mode"));
return;
}
_ => panic!(),
}
}
[27, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[27] => {
// Esc
self.mode = InputMode::Normal;
// _debug_log_to_file(format!("switched to normal mode"));
return;
}
[106, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[106] => {
// j
self.send_screen_instructions
.send(ScreenInstruction::ResizeDown)
.unwrap();
}
[107, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[107] => {
// k
self.send_screen_instructions
.send(ScreenInstruction::ResizeUp)
.unwrap();
}
[112, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[112] => {
// p
self.send_screen_instructions
.send(ScreenInstruction::MoveFocus)
.unwrap();
}
[104, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[104] => {
// h
self.send_screen_instructions
.send(ScreenInstruction::ResizeLeft)
.unwrap();
}
[108, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[108] => {
// l
self.send_screen_instructions
.send(ScreenInstruction::ResizeRight)
.unwrap();
}
[122, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[122] => {
// z
self.command_is_executing.opening_new_pane();
self.send_pty_instructions
@ -158,7 +144,7 @@ impl InputHandler {
.unwrap();
self.command_is_executing.wait_until_new_pane_is_opened();
}
[110, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[110] => {
// n
self.command_is_executing.opening_new_pane();
self.send_pty_instructions
@ -166,7 +152,7 @@ impl InputHandler {
.unwrap();
self.command_is_executing.wait_until_new_pane_is_opened();
}
[98, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[98] => {
// b
self.command_is_executing.opening_new_pane();
self.send_pty_instructions
@ -174,24 +160,24 @@ impl InputHandler {
.unwrap();
self.command_is_executing.wait_until_new_pane_is_opened();
}
[113, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[113] => {
// q
self.mode = InputMode::Exiting;
return;
}
[27, 91, 53, 126, 0, 0, 0, 0, 0, 0] => {
[27, 91, 53, 126] => {
// PgUp
self.send_screen_instructions
.send(ScreenInstruction::ScrollUp)
.unwrap();
}
[27, 91, 54, 126, 0, 0, 0, 0, 0, 0] => {
[27, 91, 54, 126] => {
// PgDown
self.send_screen_instructions
.send(ScreenInstruction::ScrollDown)
.unwrap();
}
[120, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[120] => {
// x
self.command_is_executing.closing_pane();
self.send_screen_instructions
@ -199,7 +185,7 @@ impl InputHandler {
.unwrap();
self.command_is_executing.wait_until_pane_is_closed();
}
[101, 0, 0, 0, 0, 0, 0, 0, 0, 0] => {
[101] => {
// e
self.send_screen_instructions
.send(ScreenInstruction::ToggleActiveTerminalFullscreen)

View file

@ -5,7 +5,8 @@ use nix::sys::signal::{kill, Signal};
use nix::sys::termios::{cfmakeraw, tcdrain, tcgetattr, tcsetattr, SetArg, Termios};
use nix::sys::wait::waitpid;
use nix::unistd::{read, write, ForkResult, Pid};
use std::io::{Read, Write};
use std::io::prelude::*;
use std::io::{stdin, Write};
use std::os::unix::io::RawFd;
use std::path::PathBuf;
use std::process::{Child, Command};
@ -147,7 +148,7 @@ pub trait OsApi: Send + Sync {
fn write_to_tty_stdin(&mut self, pid: RawFd, buf: &mut [u8]) -> Result<usize, nix::Error>;
fn tcdrain(&mut self, pid: RawFd) -> Result<(), nix::Error>;
fn kill(&mut self, pid: RawFd) -> Result<(), nix::Error>;
fn get_stdin_reader(&self) -> Box<dyn Read>;
fn read_from_stdin(&self) -> Vec<u8>;
fn get_stdout_writer(&self) -> Box<dyn Write>;
fn box_clone(&self) -> Box<dyn OsApi>;
}
@ -182,12 +183,14 @@ impl OsApi for OsInputOutput {
fn box_clone(&self) -> Box<dyn OsApi> {
Box::new((*self).clone())
}
fn get_stdin_reader(&self) -> Box<dyn Read> {
// TODO: stdin lock, right now it's not done because we don't have where to put it
// if we put it on the struct, we won't be able to clone the struct
// if we leave it here, we're referencing a temporary value
let stdin = ::std::io::stdin();
Box::new(stdin)
fn read_from_stdin(&self) -> Vec<u8> {
let stdin = stdin();
let mut stdin = stdin.lock();
let buffer = stdin.fill_buf().unwrap();
let length = buffer.len();
let read_bytes = Vec::from(buffer);
stdin.consume(length);
read_bytes
}
fn get_stdout_writer(&self) -> Box<dyn Write> {
let stdout = ::std::io::stdout();

View file

@ -55,7 +55,7 @@ pub enum ScreenInstruction {
NewPane(RawFd),
HorizontalSplit(RawFd),
VerticalSplit(RawFd),
WriteCharacter([u8; 10]),
WriteCharacter(Vec<u8>),
ResizeLeft,
ResizeRight,
ResizeDown,
@ -383,21 +383,10 @@ impl Screen {
let terminal_output = self.terminals.get_mut(&pid).unwrap();
terminal_output.handle_event(event);
}
pub fn write_to_active_terminal(&mut self, bytes: [u8; 10]) {
pub fn write_to_active_terminal(&mut self, mut bytes: Vec<u8>) {
if let Some(active_terminal_id) = &self.get_active_terminal_id() {
// this is a bit of a hack and is done in order not to send trailing
// zeros to the terminal (because they mess things up)
// TODO: fix this by only sending around the exact bytes read from stdin
let mut trimmed_bytes = vec![];
for byte in bytes.iter() {
if *byte == 0 {
break;
} else {
trimmed_bytes.push(*byte);
}
}
self.os_api
.write_to_tty_stdin(*active_terminal_id, &mut trimmed_bytes)
.write_to_tty_stdin(*active_terminal_id, &mut bytes)
.expect("failed to write to terminal");
self.os_api
.tcdrain(*active_terminal_id)

View file

@ -1,6 +1,6 @@
use crate::terminal_pane::PositionAndSize;
use ::std::collections::HashMap;
use ::std::io::{Read, Write};
use ::std::collections::{HashMap, VecDeque};
use ::std::io::Write;
use ::std::os::unix::io::RawFd;
use ::std::path::PathBuf;
use ::std::sync::atomic::{AtomicBool, Ordering};
@ -21,68 +21,6 @@ pub enum IoEvent {
TcDrain(RawFd),
}
pub struct FakeStdinReader {
pub input_chars: Vec<[u8; 10]>,
pub read_position: usize,
last_snapshot_time: Arc<Mutex<Instant>>,
started_reading_from_pty: Arc<AtomicBool>,
}
impl FakeStdinReader {
pub fn new(
input_chars: Vec<[u8; 10]>,
last_snapshot_time: Arc<Mutex<Instant>>,
started_reading_from_pty: Arc<AtomicBool>,
) -> Self {
FakeStdinReader {
input_chars,
read_position: 0,
last_snapshot_time,
started_reading_from_pty,
}
}
}
impl Read for FakeStdinReader {
fn read(&mut self, buf: &mut [u8]) -> Result<usize, std::io::Error> {
loop {
if self.started_reading_from_pty.load(Ordering::Acquire) == false {
::std::thread::sleep(MIN_TIME_BETWEEN_SNAPSHOTS);
} else {
let last_snapshot_time = { *self.last_snapshot_time.lock().unwrap() };
if last_snapshot_time.elapsed() > MIN_TIME_BETWEEN_SNAPSHOTS {
break;
} else {
::std::thread::sleep(MIN_TIME_BETWEEN_SNAPSHOTS - last_snapshot_time.elapsed());
}
}
}
let read_position = self.read_position;
match self.input_chars.get(read_position) {
Some(bytes_to_read) => {
for (i, byte) in bytes_to_read.iter().enumerate() {
buf[i] = *byte;
}
self.read_position += 1;
Ok(bytes_to_read.len())
}
None => {
// what is happening here?
//
// Here the stdin loop is requesting more input than we have provided it with in
// the fake input chars.
// Normally this should not happen, because each test quits in the end.
// There is one case (at the time of this writing) in which it does happen, and
// that's when we quit by closing the last pane. In this case the stdin loop might
// get a chance to request more input before the app quits and drops it. In that
// case, we just give it no input and let it keep doing its thing until it dies
// very shortly after.
Ok(0)
}
}
}
}
#[derive(Clone)]
pub struct FakeStdoutWriter {
output_buffer: Arc<Mutex<Vec<u8>>>,
@ -125,6 +63,7 @@ impl Write for FakeStdoutWriter {
pub struct FakeInputOutput {
read_buffers: Arc<Mutex<HashMap<RawFd, Bytes>>>,
input_to_add: Arc<Mutex<Option<Vec<[u8; 10]>>>>,
stdin_commands: Arc<Mutex<VecDeque<Vec<u8>>>>,
stdin_writes: Arc<Mutex<HashMap<RawFd, Vec<u8>>>>,
pub stdout_writer: FakeStdoutWriter, // stdout_writer.output is already an arc/mutex
io_events: Arc<Mutex<Vec<IoEvent>>>,
@ -144,6 +83,7 @@ impl FakeInputOutput {
read_buffers: Arc::new(Mutex::new(HashMap::new())),
stdin_writes: Arc::new(Mutex::new(HashMap::new())),
input_to_add: Arc::new(Mutex::new(None)),
stdin_commands: Arc::new(Mutex::new(VecDeque::new())),
stdout_writer,
last_snapshot_time,
io_events: Arc::new(Mutex::new(vec![])),
@ -156,8 +96,12 @@ impl FakeInputOutput {
self.possible_tty_inputs = tty_inputs;
self
}
pub fn add_terminal_input(&mut self, input: &[[u8; 10]]) {
self.input_to_add = Arc::new(Mutex::new(Some(input.to_vec())));
pub fn add_terminal_input(&mut self, input: &[&[u8]]) {
let mut stdin_commands: VecDeque<Vec<u8>> = VecDeque::new();
for command in input.iter() {
stdin_commands.push_back(command.iter().copied().collect())
}
self.stdin_commands = Arc::new(Mutex::new(stdin_commands));
}
pub fn add_terminal(&mut self, fd: RawFd) {
self.stdin_writes.lock().unwrap().insert(fd, vec![]);
@ -253,19 +197,31 @@ impl OsApi for FakeInputOutput {
fn box_clone(&self) -> Box<dyn OsApi> {
Box::new((*self).clone())
}
fn get_stdin_reader(&self) -> Box<dyn Read> {
let mut input_chars = vec![[0; 10]];
if let Some(input_to_add) = self.input_to_add.lock().unwrap().as_ref() {
for bytes in input_to_add {
input_chars.push(*bytes);
fn read_from_stdin(&self) -> Vec<u8> {
loop {
let last_snapshot_time = { *self.last_snapshot_time.lock().unwrap() };
if last_snapshot_time.elapsed() > MIN_TIME_BETWEEN_SNAPSHOTS {
break;
} else {
::std::thread::sleep(MIN_TIME_BETWEEN_SNAPSHOTS - last_snapshot_time.elapsed());
}
}
match self.stdin_commands.lock().unwrap().pop_front() {
Some(command) => command,
None => {
// what is happening here?
//
// Here the stdin loop is requesting more input than we have provided it with in
// the fake input chars.
// Normally this should not happen, because each test quits in the end.
// There is one case (at the time of this writing) in which it does happen, and
// that's when we quit by closing the last pane. In this case the stdin loop might
// get a chance to request more input before the app quits and drops it. In that
// case, we just give it no input and let it keep doing its thing until it dies
// very shortly after.
vec![]
}
}
let reader = FakeStdinReader::new(
input_chars,
self.last_snapshot_time.clone(),
self.started_reading_from_pty.clone(),
);
Box::new(reader)
}
fn get_stdout_writer(&self) -> Box<dyn Write> {
Box::new(self.stdout_writer.clone())

View file

@ -22,7 +22,7 @@ pub fn starts_with_one_terminal() {
y: 0,
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -44,7 +44,12 @@ pub fn split_terminals_vertically() {
y: 0,
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, SPLIT_VERTICALLY, QUIT]);
fake_input_output.add_terminal_input(&[
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -67,10 +72,10 @@ pub fn split_terminals_horizontally() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
@ -95,12 +100,12 @@ pub fn split_largest_terminal() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
@ -140,18 +145,18 @@ pub fn resize_right_and_up_on_the_same_axis() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_RIGHT,
RESIZE_LEFT,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&RESIZE_LEFT,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
@ -175,15 +180,15 @@ pub fn scrolling_inside_a_pane() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
SCROLL_UP,
SCROLL_UP,
SCROLL_DOWN,
SCROLL_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&SCROLL_UP,
&SCROLL_UP,
&SCROLL_DOWN,
&SCROLL_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
@ -209,13 +214,13 @@ pub fn max_panes() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&QUIT,
]);
let mut opts = Opt::default();
opts.max_panes = Some(4);
@ -241,23 +246,23 @@ pub fn toggle_focused_pane_fullscreen() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
SPAWN_TERMINAL,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
MOVE_FOCUS,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
MOVE_FOCUS,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
MOVE_FOCUS,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&SPAWN_TERMINAL,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&MOVE_FOCUS,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&MOVE_FOCUS,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&MOVE_FOCUS,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&QUIT,
]);
let mut opts = Opt::default();
opts.max_panes = Some(4);

View file

@ -32,11 +32,11 @@ pub fn close_pane_with_another_pane_above_it() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -69,12 +69,12 @@ pub fn close_pane_with_another_pane_below_it() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -105,11 +105,11 @@ pub fn close_pane_with_another_pane_to_the_left() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -140,12 +140,12 @@ pub fn close_pane_with_another_pane_to_the_right() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -178,15 +178,15 @@ pub fn close_pane_with_multiple_panes_above_it() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -219,13 +219,13 @@ pub fn close_pane_with_multiple_panes_below_it() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -258,15 +258,15 @@ pub fn close_pane_with_multiple_panes_to_the_left() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -299,13 +299,13 @@ pub fn close_pane_with_multiple_panes_to_the_right() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -338,27 +338,27 @@ pub fn close_pane_with_multiple_panes_above_it_away_from_screen_edges() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
RESIZE_UP,
MOVE_FOCUS,
RESIZE_UP,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&RESIZE_UP,
&MOVE_FOCUS,
&RESIZE_UP,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -391,27 +391,27 @@ pub fn close_pane_with_multiple_panes_below_it_away_from_screen_edges() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
RESIZE_DOWN,
MOVE_FOCUS,
RESIZE_DOWN,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&RESIZE_DOWN,
&MOVE_FOCUS,
&RESIZE_DOWN,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -446,27 +446,27 @@ pub fn close_pane_with_multiple_panes_to_the_left_away_from_screen_edges() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
RESIZE_LEFT,
MOVE_FOCUS,
RESIZE_LEFT,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&RESIZE_LEFT,
&MOVE_FOCUS,
&RESIZE_LEFT,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -501,27 +501,27 @@ pub fn close_pane_with_multiple_panes_to_the_right_away_from_screen_edges() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
RESIZE_LEFT,
MOVE_FOCUS,
RESIZE_LEFT,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&RESIZE_LEFT,
&MOVE_FOCUS,
&RESIZE_LEFT,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -546,14 +546,14 @@ pub fn closing_last_pane_exits_app() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
CLOSE_FOCUSED_PANE,
CLOSE_FOCUSED_PANE,
CLOSE_FOCUSED_PANE,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&CLOSE_FOCUSED_PANE,
&CLOSE_FOCUSED_PANE,
&CLOSE_FOCUSED_PANE,
]);
start(Box::new(fake_input_output.clone()), Opt::default());

View file

@ -39,7 +39,7 @@ pub fn run_bandwhich_from_fish_shell() {
};
let fixture_name = "fish_and_bandwhich";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -62,7 +62,7 @@ pub fn fish_tab_completion_options() {
};
let fixture_name = "fish_tab_completion_options";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -90,7 +90,7 @@ pub fn fish_select_tab_completion_options() {
};
let fixture_name = "fish_select_tab_completion_options";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -122,8 +122,7 @@ pub fn vim_scroll_region_down() {
};
let fixture_name = "vim_scroll_region_down";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
// fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, 17]); // quit (ctrl-q)
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]); // quit (ctrl-q)
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]); // quit (ctrl-q)
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -152,7 +151,7 @@ pub fn vim_ctrl_d() {
};
let fixture_name = "vim_ctrl_d";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -180,7 +179,7 @@ pub fn vim_ctrl_u() {
};
let fixture_name = "vim_ctrl_u";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer
@ -203,7 +202,7 @@ pub fn htop() {
};
let fixture_name = "htop";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
start(Box::new(fake_input_output.clone()), Opt::default());
let output_frames = fake_input_output
.stdout_writer

View file

@ -20,7 +20,7 @@ pub fn accepts_basic_layout() {
y: 0,
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[COMMAND_TOGGLE, COMMAND_TOGGLE, QUIT]);
fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &COMMAND_TOGGLE, &QUIT]);
let mut opts = Opt::default();
opts.layout = Some(PathBuf::from(
"src/tests/fixtures/layouts/three-panes-with-nesting.yaml",
@ -61,7 +61,7 @@ pub fn should_throw_for_more_than_100_percent_total() {
y: 0,
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[QUIT]);
fake_input_output.add_terminal_input(&[&QUIT]);
let mut opts = Opt::default();
opts.layout = Some(PathBuf::from(
@ -81,7 +81,7 @@ pub fn should_throw_for_less_than_100_percent_total() {
y: 0,
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[QUIT]);
fake_input_output.add_terminal_input(&[&QUIT]);
let mut opts = Opt::default();
opts.layout = Some(PathBuf::from(

View file

@ -33,11 +33,11 @@ pub fn resize_down_with_pane_above() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -70,12 +70,12 @@ pub fn resize_down_with_pane_below() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -111,14 +111,14 @@ pub fn resize_down_with_panes_above_and_below() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -152,15 +152,15 @@ pub fn resize_down_with_multiple_panes_above() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -195,17 +195,17 @@ pub fn resize_down_with_panes_above_aligned_left_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -240,16 +240,16 @@ pub fn resize_down_with_panes_below_aligned_left_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -284,14 +284,14 @@ pub fn resize_down_with_panes_above_aligned_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -326,15 +326,15 @@ pub fn resize_down_with_panes_below_aligned_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -369,18 +369,18 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -415,20 +415,20 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -463,35 +463,35 @@ pub fn resize_down_with_panes_above_aligned_left_and_right_with_panes_to_the_lef
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
RESIZE_LEFT,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&RESIZE_LEFT,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -526,37 +526,37 @@ pub fn resize_down_with_panes_below_aligned_left_and_right_with_to_the_left_and_
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
RESIZE_LEFT,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_DOWN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&RESIZE_LEFT,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_DOWN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());

View file

@ -29,11 +29,11 @@ pub fn resize_left_with_pane_to_the_left() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -64,12 +64,12 @@ pub fn resize_left_with_pane_to_the_right() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -100,14 +100,14 @@ pub fn resize_left_with_panes_to_the_left_and_right() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -139,15 +139,15 @@ pub fn resize_left_with_multiple_panes_to_the_left() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -180,17 +180,17 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -223,14 +223,14 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -263,16 +263,16 @@ pub fn resize_left_with_panes_to_the_left_aligned_bottom_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -305,15 +305,15 @@ pub fn resize_left_with_panes_to_the_right_aligned_bottom_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -348,18 +348,18 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_current_pa
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -394,20 +394,20 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_current_p
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -442,35 +442,35 @@ pub fn resize_left_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abov
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_UP,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_UP,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -506,37 +506,37 @@ pub fn resize_left_with_panes_to_the_right_aligned_top_and_bottom_with_panes_abo
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_UP,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_LEFT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_UP,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_LEFT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());

View file

@ -29,11 +29,11 @@ pub fn resize_right_with_pane_to_the_left() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -64,12 +64,12 @@ pub fn resize_right_with_pane_to_the_right() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -100,14 +100,14 @@ pub fn resize_right_with_panes_to_the_left_and_right() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -139,15 +139,15 @@ pub fn resize_right_with_multiple_panes_to_the_left() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -180,17 +180,17 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -223,14 +223,14 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -263,16 +263,16 @@ pub fn resize_right_with_panes_to_the_left_aligned_bottom_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -305,15 +305,15 @@ pub fn resize_right_with_panes_to_the_right_aligned_bottom_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -348,18 +348,18 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_current_p
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -394,20 +394,20 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_current_
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -442,35 +442,35 @@ pub fn resize_right_with_panes_to_the_left_aligned_top_and_bottom_with_panes_abo
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_UP,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_UP,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -505,37 +505,37 @@ pub fn resize_right_with_panes_to_the_right_aligned_top_and_bottom_with_panes_ab
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_UP,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
RESIZE_UP,
RESIZE_RIGHT,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_UP,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&RESIZE_UP,
&RESIZE_RIGHT,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());

View file

@ -31,11 +31,11 @@ pub fn resize_up_with_pane_above() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -68,12 +68,12 @@ pub fn resize_up_with_pane_below() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -109,14 +109,14 @@ pub fn resize_up_with_panes_above_and_below() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -149,15 +149,15 @@ pub fn resize_up_with_multiple_panes_above() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -190,17 +190,17 @@ pub fn resize_up_with_panes_above_aligned_left_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -235,16 +235,16 @@ pub fn resize_up_with_panes_below_aligned_left_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -279,14 +279,14 @@ pub fn resize_up_with_panes_above_aligned_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -321,15 +321,15 @@ pub fn resize_up_with_panes_below_aligned_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -364,18 +364,18 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -410,20 +410,20 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_current_pane() {
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -458,35 +458,35 @@ pub fn resize_up_with_panes_above_aligned_left_and_right_with_panes_to_the_left_
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
RESIZE_LEFT,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&RESIZE_LEFT,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -521,37 +521,37 @@ pub fn resize_up_with_panes_below_aligned_left_and_right_with_to_the_left_and_ri
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
RESIZE_LEFT,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_HORIZONTALLY,
MOVE_FOCUS,
MOVE_FOCUS,
SPLIT_VERTICALLY,
SPLIT_VERTICALLY,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_LEFT,
RESIZE_LEFT,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
MOVE_FOCUS,
RESIZE_UP,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&RESIZE_LEFT,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_HORIZONTALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&SPLIT_VERTICALLY,
&SPLIT_VERTICALLY,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_LEFT,
&RESIZE_LEFT,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&MOVE_FOCUS,
&RESIZE_UP,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());

View file

@ -24,13 +24,13 @@ pub fn adding_new_terminal_in_fullscreen() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
SPLIT_HORIZONTALLY,
CLOSE_FOCUSED_PANE,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&SPLIT_HORIZONTALLY,
&CLOSE_FOCUSED_PANE,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());
@ -55,13 +55,13 @@ pub fn move_focus_is_disabled_in_fullscreen() {
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
fake_input_output.add_terminal_input(&[
COMMAND_TOGGLE,
COMMAND_TOGGLE,
SPLIT_VERTICALLY,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
MOVE_FOCUS,
TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
QUIT,
&COMMAND_TOGGLE,
&COMMAND_TOGGLE,
&SPLIT_VERTICALLY,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&MOVE_FOCUS,
&TOGGLE_ACTIVE_TERMINAL_FULLSCREEN,
&QUIT,
]);
start(Box::new(fake_input_output.clone()), Opt::default());

View file

@ -40,31 +40,31 @@ pub fn get_output_frame_snapshots(
pub mod commands {
/// ctrl-g
pub const COMMAND_TOGGLE: [u8; 10] = [7, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const COMMAND_TOGGLE: [u8; 1] = [7];
/// b
pub const SPLIT_HORIZONTALLY: [u8; 10] = [98, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const SPLIT_HORIZONTALLY: [u8; 1] = [98];
/// n
pub const SPLIT_VERTICALLY: [u8; 10] = [110, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const SPLIT_VERTICALLY: [u8; 1] = [110];
/// j
pub const RESIZE_DOWN: [u8; 10] = [106, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const RESIZE_DOWN: [u8; 1] = [106];
/// k
pub const RESIZE_UP: [u8; 10] = [107, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const RESIZE_UP: [u8; 1] = [107];
/// p
pub const MOVE_FOCUS: [u8; 10] = [112, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const MOVE_FOCUS: [u8; 1] = [112];
/// h
pub const RESIZE_LEFT: [u8; 10] = [104, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const RESIZE_LEFT: [u8; 1] = [104];
/// l
pub const RESIZE_RIGHT: [u8; 10] = [108, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const RESIZE_RIGHT: [u8; 1] = [108];
/// z
pub const SPAWN_TERMINAL: [u8; 10] = [122, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const SPAWN_TERMINAL: [u8; 1] = [122];
/// q
pub const QUIT: [u8; 10] = [113, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const QUIT: [u8; 1] = [113];
/// PgUp
pub const SCROLL_UP: [u8; 10] = [27, 91, 53, 126, 0, 0, 0, 0, 0, 0];
pub const SCROLL_UP: [u8; 4] = [27, 91, 53, 126];
/// PgDn
pub const SCROLL_DOWN: [u8; 10] = [27, 91, 54, 126, 0, 0, 0, 0, 0, 0];
pub const SCROLL_DOWN: [u8; 4] = [27, 91, 54, 126];
/// x
pub const CLOSE_FOCUSED_PANE: [u8; 10] = [120, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const CLOSE_FOCUSED_PANE: [u8; 1] = [120];
/// e
pub const TOGGLE_ACTIVE_TERMINAL_FULLSCREEN: [u8; 10] = [101, 0, 0, 0, 0, 0, 0, 0, 0, 0];
pub const TOGGLE_ACTIVE_TERMINAL_FULLSCREEN: [u8; 1] = [101];
}