nvda icon indicating copy to clipboard operation
nvda copied to clipboard

TerminalModules

Open derekriemer opened this issue 9 years ago • 4 comments

Proposal for terminalModules, Modules for terminal apps.

Abstract:

Since terminal apps have no way of being detected, traditional appModules can't be written. For example, assume I enter vim to edit a file on my server. Since vim has strange commands, such as h j k l w ce % i a ... I'd love to be able to use these. However, I need to teach NVDA about it. Further complicating things, there's no way for NVDA to detect that vim is running since all it can see is a plain boring grid of chars and the app doesn't change, since I'm in an ssh session. This proposal lines the design for a terminal customization system, and a GUI for enabling terminal modes for the current session.

Development

A class called TerminalModule, and its associated terminalModule addon type should be created. A terminalModuleHandler might need added.

A terminalModule should receive typed char notifications via event_typedChar, caret events, etc. and I'm probably missing at least one use case here for other events to receive.

There's probably no need for chooseNVDAObjectOverlayClasses because terminals lack structure, hence a need for this. terminalModules should allow scripts on any terminal.

Multiple terminal modules should be allowed to be enabled at once, say vim and screen. For example, a screen module could be created that reads the title bar if control+a followed by n is pressed. However, one of the users screens is in vim, thus vim module is enabled from the GUI as well.

When a terminal gains focus, (Role of terminal, or behaviors.Terminal in the list of classes), we send events and scripts ..., if a terminal isn't in focus, we don't.

GUI component

Since there's no way whatsoever for a terminal app to say invoke me when this happens, we should present a GUI in response to a keypress. I propose NVDA+space I.E. change modes. I'm thinking of something similar to the addons manager, Ideally a checkable list of all modes would be best. Each mode the user wants could be toggled. Alternatively, nvda+space could just cycle through each mode (No GUI at all), and a GUI from tools could be available to add or remove a mode from the ring of modes in the nvda+space order.

derekriemer avatar Feb 03 '17 13:02 derekriemer

I'm assuming you refer to both the command prompt and the run dialogue if running a command file, say a batch file from there or from a shortcut. also the new versions of command prompt that are called other things but really just arre like dos prompts with extras. I use batch files a lot in windows to do stuff as I do not much care what the screen does as long as things happen I want to happen. Brian

[email protected] Sent via blueyonder. Please address personal email to:- [email protected], putting 'Brian Gaff' in the display name field. ----- Original Message ----- From: "derekriemer" [email protected] To: "nvaccess/nvda" [email protected] Cc: "Subscribed" [email protected] Sent: Friday, February 03, 2017 1:30 PM Subject: [nvaccess/nvda] TerminalModules (#6835)

Proposal for terminalModules, Modules for terminal apps.

Abstract:

Since terminal apps have no way of being detected, traditional appModules can't be written. For example, assume I enter vim to edit a file on my server. Since vim has strange commands, such as h j k l w ce % i a ... I'd love to be able to use these. However, I need to teach NVDA about it. Further complicating things, there's no way for NVDA to detect that vim is running since all it can see is a plain boring grid of chars and the app doesn't change, since I'm in an ssh session. This proposal lines the design for a terminal customization system, and a GUI for enabling terminal modes for the current session.

Development

A class called TerminalModule, and its associated terminalModule addon type should be created. A terminalModuleHandler might need added.

A terminalModule should receive typed char notifications via event_typedChar, caret events, etc. and I'm probably missing at least one use case here for other events to receive.

There's probably no need for chooseNVDAObjectOverlayClasses because terminals lack structure, hence a need for this. terminalModules should allow scripts on any terminal.

Multiple terminal modules should be allowed to be enabled at once, say vim and screen. For example, a screen module could be created that reads the title bar if control+a followed by n is pressed. However, one of the users screens is in vim, thus vim module is enabled from the GUI as well.

When a terminal gains focus, (Role of terminal, or behaviors.Terminal in the list of classes), we send events and scripts ..., if a terminal isn't in focus, we don't.

GUI component

Since there's no way whatsoever for a terminal app to say invoke me when this happens, we should present a GUI in response to a keypress. I propose NVDA+space I.E. change modes. I'm thinking of something similar to the addons manager, Ideally a checkable list of all modes would be best. Each mode the user wants could be toggled. Alternatively, nvda+space could just cycle through each mode (No GUI at all), and a GUI from tools could be available to add or remove a mode from the ring of modes in the nvda+space order.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/nvaccess/nvda/issues/6835

Brian1Gaff avatar Feb 03 '17 16:02 Brian1Gaff

No. Just anything that's a terminal. The run dialog isn't a terminal.

On Fri, Feb 3, 2017 at 9:06 AM, Brian1Gaff [email protected] wrote:

I'm assuming you refer to both the command prompt and the run dialogue if running a command file, say a batch file from there or from a shortcut. also the new versions of command prompt that are called other things but really just arre like dos prompts with extras. I use batch files a lot in windows to do stuff as I do not much care what the screen does as long as things happen I want to happen. Brian

[email protected] Sent via blueyonder. Please address personal email to:- [email protected], putting 'Brian Gaff' in the display name field. ----- Original Message ----- From: "derekriemer" [email protected] To: "nvaccess/nvda" [email protected] Cc: "Subscribed" [email protected] Sent: Friday, February 03, 2017 1:30 PM Subject: [nvaccess/nvda] TerminalModules (#6835)

Proposal for terminalModules, Modules for terminal apps.

Abstract:

Since terminal apps have no way of being detected, traditional appModules can't be written. For example, assume I enter vim to edit a file on my server. Since vim has strange commands, such as h j k l w ce % i a ... I'd love to be able to use these. However, I need to teach NVDA about it. Further complicating things, there's no way for NVDA to detect that vim is running since all it can see is a plain boring grid of chars and the app doesn't change, since I'm in an ssh session. This proposal lines the design for a terminal customization system, and a GUI for enabling terminal modes for the current session.

Development

A class called TerminalModule, and its associated terminalModule addon type should be created. A terminalModuleHandler might need added.

A terminalModule should receive typed char notifications via event_typedChar, caret events, etc. and I'm probably missing at least one use case here for other events to receive.

There's probably no need for chooseNVDAObjectOverlayClasses because terminals lack structure, hence a need for this. terminalModules should allow scripts on any terminal.

Multiple terminal modules should be allowed to be enabled at once, say vim and screen. For example, a screen module could be created that reads the title bar if control+a followed by n is pressed. However, one of the users screens is in vim, thus vim module is enabled from the GUI as well.

When a terminal gains focus, (Role of terminal, or behaviors.Terminal in the list of classes), we send events and scripts ..., if a terminal isn't in focus, we don't.

GUI component

Since there's no way whatsoever for a terminal app to say invoke me when this happens, we should present a GUI in response to a keypress. I propose NVDA+space I.E. change modes. I'm thinking of something similar to the addons manager, Ideally a checkable list of all modes would be best. Each mode the user wants could be toggled. Alternatively, nvda+space could just cycle through each mode (No GUI at all), and a GUI from tools could be available to add or remove a mode from the ring of modes in the nvda+space order.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/nvaccess/nvda/issues/6835

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/nvaccess/nvda/issues/6835#issuecomment-277287664, or mute the thread https://github.com/notifications/unsubscribe-auth/AFGivWMfobywt1UM1APXhZK_ptHjchXMks5rY1B2gaJpZM4L2Uz3 .

--

Derek Riemer: Improving the world one byte at a time!

  • University of Colorado Boulder Department of computer science, 4th year undergraduate student.
  • Accessibility enthusiast.
  • Proud user of the NVDA screen reader.
  • Open source enthusiast.
  • Skier.

Personal website http://derekriemer.com

derekriemer avatar Feb 04 '17 07:02 derekriemer

cc: @codeofdusk

Adriani90 avatar May 04 '20 21:05 Adriani90

How is this now behaving when UIA for consoles is enabled? cc: @josephsl

Adriani90 avatar Oct 05 '24 14:10 Adriani90

No updates from users who could reproduce this since many years upon request, closing as abandoned. if you are still having this issue, please comment and we can reopen.

Adriani90 avatar Jun 29 '25 17:06 Adriani90

Please note that this is a feature request, please do not close it.

hwf1324 avatar Jun 30 '25 06:06 hwf1324

@Adriani90:

  1. Before closing an issue for lack of update, I'd recommend that you tag the person from which you expect an update (here @derekriemer)
  2. Not sure that feature requests need to be closed due to lack of update, especially with #18379.

I prefer reopen the issue and ask @seanbudd. Thanks.

CyrilleB79 avatar Jun 30 '25 20:06 CyrilleB79

@CyrilleB79 sorry I didn't tag Derek since he is not very active on Github in this repository anymore. On the other hand, the last two comments do not really contribute to bring forward this discussion.

So my question again which I already raised some years ago: does UIA in consoles have any positive effect on this request? If people have interest in this feature, it would be nice to have some updates instead of noisy comments.

Adriani90 avatar Jun 30 '25 22:06 Adriani90

I don't think UIA will have any effect on this. This issue is about how to organize character reading, which may require a heuristic algorithm. Unless UIA can report the program currently running on the terminal.

hwf1324 avatar Jul 01 '25 00:07 hwf1324