tmux-python / libtmux

⚙️ Python API / wrapper for tmux

Home Page:https://libtmux.git-pull.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pane.send_key(literal=False) not sending c-c

bubylou opened this issue · comments

Running the code listed below just sends the characters c-c to the pane instead of the Control + C key combination used to close a program but if you add the suppress_history=False flag then it works as intended. I wasn't sure if there was something with my specific environment or software versions that was causing this. I am using libtmux version 0.8.5 and tmux 2.8. Is anyone else having this issue?

session = tmux.find_where({'session_name': 'TEST')
window = session.list_windows()[0]
pane = window.list_panes()[0]
pane.send_keys('c-c', literal=False)

I was going to send a pull request but could think of a couple different ways to handle this.

  1. The easiest way would be to just document this behavior to make everyone aware that the history suppression must be turned off in order for keys like control to be sent.
  2. History suppression could also be turned off by default and explain in the documentation that if it is turned on keys will not be sent. I don't see this flag being all that important (at least not to me) and since it's an extra feature which is not normal to regular tmux turning it off by default shouldn't be a huge deal.
  3. Another way to fix it would be to make literal=True the default and remove the history prefix from the non-literal one. Since the only reason to use literal=False then would be to send actual keys instead of text having the history suppression off would not affect anything since those keys are not stored in shell history.
  4. The only other idea I had was somehow determining what is being sent is a key not just some characters then turning history suppression off. I couldn't think of any easy way to do this so it's likely not worth considering.

I feel like 3 seems like a good way.

        prefix = ' ' if suppress_history and not literal else ''

on

prefix = ' ' if suppress_history else ''