A simple Ruby Gem to make input in Curses TUI's more User Friendly
Go to file
Connor C 6f7de9c249 Update README.md 2024-02-28 21:19:56 -07:00
.github/workflows initial commit 2023-06-07 15:56:30 -06:00
bin initial commit 2023-06-07 15:56:30 -06:00
lib Just do some stuff to make an excuse to up the gem 2023-09-20 00:04:59 -06:00
sig initial commit 2023-06-07 15:56:30 -06:00
.gitignore Just do some stuff to make an excuse to up the gem 2023-09-20 00:04:59 -06:00
.rubocop.yml Refactor InputHandler, Add Enter Key Handling, Improve Input Redraw, Add Comments, Remove RSpec Tests, and Manual Testing 2023-06-08 11:05:38 -06:00
CHANGELOG.md feat: Introduce colored text windows and enhanced positioning 2023-07-26 16:31:20 -06:00
CODE_OF_CONDUCT.md initial commit 2023-06-07 15:56:30 -06:00
Gemfile update bundle and gemspec 2023-09-20 00:09:56 -06:00
Gemfile.lock update bundle and gemspec 2023-09-20 00:09:56 -06:00
LICENSE Update license, and gitignore, also update bundle 2023-09-19 22:56:33 -06:00
README.md Update README.md 2024-02-28 21:19:56 -07:00
Rakefile initial commit 2023-06-07 15:56:30 -06:00
dynamic_curses_input.gemspec update bundle and gemspec 2023-09-20 00:09:56 -06:00



DynamicCursesInput is a Ruby gem that provides a simple and intuitive way to handle user input in a Curses-based terminal user interface (TUI). It allows for dynamic input handling, including cursor movement and inline character addition and deletion.

If you'd like to support PixelRidge Softworks OpenSource Development, check out our Patreon
If you need more direct help, join our Discord

Table of Contents


To install DynamicCursesInput, add the following line to your application's Gemfile:

gem 'dynamic_curses_input'

Then execute:

$ bundle install

Or install it yourself as:

$ gem install dynamic_curses_input


Here's a simple example of how to use DynamicCursesInput:

require "curses"
require "dynamic_curses_input"

  Curses.addstr("You should be able to use the left and right arrow keys to switch between characters in the line, and selectively edit them.\n")
  Curses.addstr("Enter your name: ")
  name = DCI.catch_input(true)
  Curses.addstr("\nYou entered: #{name}")

  # Log the output
  logger.info("Name entered: #{name}")

In this example, DCI.catch_input(true) will capture user input until the Enter key is pressed, echoing the input to the screen.


Detailed documentation for each function is available in the wiki.


DynamicCursesInput depends on the Curses gem.


  • Q: How do I handle special keys like arrow keys?
    • A: Special keys like arrow keys are automatically handled by DynamicCursesInput.


If you encounter any issues while using DynamicCursesInput, please check the issues page. If your issue isn't listed, feel free to open a new issue.

Contribution Guidelines

We welcome contributions from the community! Please read our contribution guidelines before submitting a pull request.


DynamicCursesInput is available under the MIT License.

Note from the Developer:

There is a function in this gem that is not finished yet, it's for making asking questions in a Curses TUI easier from within the gem. This method shouldn't be used yet.