tmux-python / tmux-python/libtmux

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

Open
#310 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.2k
Forks
127
Avg merge
2h 13m
Merged PRs (30d)
1

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the pane.send_keys entry point and reproduce the supplied libtmux 0.8.5 and tmux 2.8 example, comparing literal and suppress_history behavior. Review how key sequences and history suppression are handled, then confirm with maintainers whether the expected outcome is a behavior change or documentation; done means the chosen behavior is implemented or clearly documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.