sle*_*ica 14 python curses vim
我想在基于curses的python程序中提供键绑定.理想的解决方案是在周围设置一个抽象层getch(),产生可读的字符串,可能采用类似vim的格式.
在pythonese:
def get_keycomb(wind):
string = read_keycomb(wind) # read with wind.getch() as needed
return string # something like '<C-S-a>'
Run Code Online (Sandbox Code Playgroud)
然后,我可以通过将字符串用作dict函数中的键来轻松实现映射.
是否有一个python库提供这种功能,或者比手动为所有内容提供名称更容易实现它?
所有非特殊键的代码都是字符的 ascii 代码,因此该表的一部分很容易构建。
char_codes = {chr(i):i for i in range(256)}
Run Code Online (Sandbox Code Playgroud)
所有特殊字母的代码都可以在 curses 模块中作为 KEY_* 常量使用,因此我们可以通过以下方式获得它们:
specials_codes = {name[4:]: value for name, value in vars(curses).items()
if name.startswith('KEY_')}
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用以下代码构建映射:
import curses
mapping = {chr(i):i for i in range(256)}
mapping.update((name[4:], value) for name, value in vars(curses).items()
if name.startswith('KEY_'))
print(mapping)
Run Code Online (Sandbox Code Playgroud)