禁用Python curses中的功能键

时间:2014-01-31 16:26:31

标签: curses

我正在使用Python curses编写应用程序,我想知道是否有一种方法可以禁用功能键。我已将键盘(1)设置为一次读取一个字符。这适用于Insert,HOME,DELETE,PAGEUP和PAGEDOWN键,但不适用于功能键......

我需要完全禁用功能键,我想控制所有键的行为。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用ascii代码:例如27是"Less": { "CompileOnBuild": true, "CompileOnSave": false, "EnableChainCompilation": true, "GenerateSourceMaps": true, "MinifyInPlace": false, "OutputDirectory": "css", "ProcessSourceMapsForEditorEnhancements": true, "ShowPreviewPane": true, "StrictMath": false }

答案 1 :(得分:0)

你不能让功能键消失(除非你将用户限制在非常简单的键盘上),但你可以检测它们并忽略它们,如果你想做的话。

您可以打开keypad,忽略非ASCII字符(0到255范围之外),或者将其关闭并自行过滤掉。虽然Python curses接口提供了可以比较密钥的symbolic constants,但是底层curses库为函数键返回超过255的值。一个简单的范围检查就足以排除任何不需要的密钥。

功能键(也称为特殊键)如果不是单个控制字符(代码0到31或127 - 请参阅Python curses.ascii类的名称)通常作为转义序列发送遵循从另一个方向发送的控制序列的ECMA-48格式规则:从主机到终端。

格式规则对转义序列的不同部分使用不同的ASCII字符。以下是最常用格式(CSI)的摘要:

  • ESC
  • [
  • 指定私有序列的可选字符(<=>?之一
  • 以分号(;
  • 分隔的可选数字参数
  • 最终字符(范围从64到126)。

某些程序(例如vi)接受普通的 ESC 字符,并且必须在收到转义字符后等待一小段时间,以确定以下字符是否显示特殊键是被打字。如果你不必这样做,你可以(比如emacs)简单地假设每个转义字符都会启动一个特殊键。

Standard keys functions in curses module

中提出了相关问题