diff --git a/libtmux/pane.py b/libtmux/pane.py index e39855437..4adbc4f37 100644 --- a/libtmux/pane.py +++ b/libtmux/pane.py @@ -93,7 +93,7 @@ def cmd(self, cmd, *args, **kwargs): return self.server.cmd(cmd, *args, **kwargs) - def send_keys(self, cmd, enter=True, suppress_history=True): + def send_keys(self, cmd, enter=True, suppress_history=True, literal=False): """ ``$ tmux send-keys`` to the pane. @@ -108,9 +108,15 @@ def send_keys(self, cmd, enter=True, suppress_history=True): Send enter after sending the input, default True. suppress_history : bool, optional Don't add these keys to the shell history, default True. + literal : bool, optional + Send keys literally, default True. """ prefix = ' ' if suppress_history else '' - self.cmd('send-keys', prefix + cmd) + + if literal: + self.cmd('send-keys', '-l', prefix + cmd) + else: + self.cmd('send-keys', prefix + cmd) if enter: self.enter() diff --git a/tests/test_pane.py b/tests/test_pane.py index 24e3e91a3..bcd74d183 100644 --- a/tests/test_pane.py +++ b/tests/test_pane.py @@ -25,6 +25,17 @@ def test_resize_pane(session): assert int(pane1['pane_height']) == 3 +def test_send_keys(session): + pane = session.attached_window.attached_pane + pane.send_keys('c-c', literal=True) + + pane_contents = '\n'.join(pane.cmd('capture-pane', '-p').stdout) + assert 'c-c' in pane_contents + + pane.send_keys('c-a', literal=False) + assert 'c-a' not in pane_contents, 'should not print to pane' + + def test_set_height(session): window = session.new_window(window_name='test_set_height') window.split_window()