Skip to main content

Library to easily read single chars and key strokes

Project description

GitHub Repository Latest PyPi version supported Python versions Project licence
Automated testing results Coveralls results Number of PyPi downloads

python-readchar

Library to easily read single chars and keystrokes.

Born as a python-inquirer requirement.

Installation

simply install it via pip:

pip install readchar

Or download the source code from PyPi.

Usage

Simply read a character or keystroke:

import readchar

key = readchar.readkey()

React to different kinds of key-presses:

from readchar import readkey, key

while True:
  k = readkey()
  if k == "a":
    # do stuff
  if k == key.DOWN:
    # do stuff
  if k == key.ENTER:
    break

Documentation

There are just two methods:

readchar.readchar() -> str

Reads one character from stdin, returning it as a string with length 1. Waits until a character is available.

As only ASCII characters are actually a single character, you usually want to use the next function, that also handles longer keys.

readchar.readkey() -> str

Reads the next keystroke from stdin, returning it as a string. Waits until a keystroke is available.

A keystroke can be:

  • single characters as returned by readchar(). These include:
    • character for normal keys: a, Z, 9,...
    • special characters like ENTER, BACKSPACE, TAB,...
    • combinations with CTRL: CTRL+A,...
  • keys that are made up of multiple characters:
    • characters for cursors/arrows: 🡩, 🡪, 🡫, 🡨
    • navigation keys: INSERT, HOME,...
    • function keys: F1 to F12
    • combinations with ALT: ALT+A,...
    • combinations with CTRL and ALT: CTRL+ALT+SUPR,...

Note CTRL+C will not be returned by readkey(), but instead raise a KeyboardInterupt. If you what to handle it yourself, use readchar().

readchar.key module

This submodule contains a list of available keys to compare against. The constants are defined depending on your operating system, so it should be fully portable. If a key is listed here for your platform, readkey() can read it, and you can compare against it.

readchar.config class

This static class contains configurations for readchar. It holds constants that are used in other parts of the code as class attributes. You can override/change these to modify its behaviour. Here is a description of the existing attributes:

INTERRUPT_KEYS

List of keys that will result in readkey() raising a KeyboardInterrupt.
Default: [key.CTRL_C]

OS Support

This library actively supports these operating systems:

  • Linux
  • Windows

Some operating systems are enabled, but not actively tested or supported:

  • macOS
  • FreeBSD

Theoretically every Unix based system should work, but they will not be actively tested. It is also required that somebody provides initial test results before the OS is enabled and added to the list. Feel free to open a PR for that.

Thank you!

How to contribute

You have an issue problem or found a bug? You have a great new idea or just want to fix a typo? Great :+1:. We are happy to accept your issue or pull request, but first, please read our contribution guidelines. They will also tell you how to write code for this repo and how to properly prepare an issue or a pull request.


Copyright (c) 2014-2022 Miguel Ángel García

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

readchar-4.0.4.dev0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

readchar-4.0.4.dev0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file readchar-4.0.4.dev0.tar.gz.

File metadata

  • Download URL: readchar-4.0.4.dev0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for readchar-4.0.4.dev0.tar.gz
Algorithm Hash digest
SHA256 3843b9033fc65c9c5283b44f6eb939622f8849da3485be28ec9236d8b5cf0b54
MD5 498a347f059482d31d034de3793bceab
BLAKE2b-256 912613afe678dcc5a4dd4f022e4bd7eac9b20f6df3f519fa4bc4ee6bcb2d4435

See more details on using hashes here.

File details

Details for the file readchar-4.0.4.dev0-py3-none-any.whl.

File metadata

  • Download URL: readchar-4.0.4.dev0-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for readchar-4.0.4.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 370f2d23e9ce3fb9f7a68ac022760776337389371ba246c414e52f0e8bbaf364
MD5 5fa2b072099d4aeb3ef7bf33bdbaea09
BLAKE2b-256 bc02be7a7b89277471bcddbc7e3166f0d3640ced53e5de4ba0d0cd4affccb104

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page