是否可以在 Sublime Text 3 中的键绑定中使用井号(#,磅号)键?

是否可以在 Sublime Text 3 中的键绑定中使用井号(#,磅号)键?

在英国键盘上,井号(#,在其他地方也称为磅号)有自己的键(上方带有波浪号)。

大概是因为它不是美国键盘上的标准键,所以它没有被列在文档中的命名键列表用于自定义按键。

有没有办法在创建自定义键绑定时引用它?

答案1

对你的问题的简短回答是,这是可能的,但是由于你的键盘布局和/或你可能没有想到 Sublime 映射键的方式存在一些逻辑上的“障碍”,你需要的绑定可能不是你所期望的。

然而,解释这个原因以及如何确定这个键(或任何其他键)的绑定需要是什么样子则有点复杂。

一般来说,Sublime 使用扫描码来确定您按下了哪个键。扫描码基于键盘上按键的位置,而不是实际创建的字符。

这样做的结果是,即使您按下的键不在美国键盘上,Sublime 也会将其视为美国键盘上的键;您在问题中提到的列表中的按键列表假定采用标准的美国键盘布局。

为了诊断键绑定问题或查看 Sublime 如何读取您的输入,您可以通过从View > Show Console菜单中打开 Sublime 控制台并输入以下命令来打开输入日志记录:

sublime.log_input(True)

启用输入日志记录后,Sublime 将在控制台中报告有关其看到的每个输入事件的消息。输入日志记录将一直有效,直到您运行相同的命令False或重新启动 Sublime。

您通常会看到下列内容之一:

  • chr evt: #,它告诉你你按下了特点
  • key evt: backspace,它告诉你你按下了钥匙
  • key evt后面跟着chr evt,这意味着你按下的键类似于死键即尝试给字符添加变音符号。
  • 如果该键确实已失效,或者 Sublime 之外的某些东西(例如操作系统)在 Sublime 有机会看到它之前吞噬了键盘事件,则什么也不会发生

要将键绑定到报告chr事件的事物,您的映射应该仅包含字符:

{ "keys": ["#"], "command": "echo"},

要绑定报告为事件的键key,您可以使用事件中报告的键,包括任何修饰符(control以及ctrl):

{ "keys": ["backspace"], "command": "echo"},

尽管如此,输入日志报告的内容可能并不总是您最初期望的那样,这是您原始问题的评论中提到的项目之一。

生成字符的按键组合会被报告为chr事件,这意味着它们会考虑换档状态。不会生成字符的按键会被报告为key事件,其中包括修饰键和按下的键

强调这一点是因为它可能不是您最初期望的。

举例来说,在美国键盘布局上,#共享3一个键,是#该键的移位版本。

因此:

  • 3chr evt: 3 (0x33)
  • shift+3chr evt: # (0x23)

这在逻辑上说得通;3单独按下 键会得到一个文字3,而使用 Shift 会得到一个井号字符。

但请注意以下几点:

  • Ctrl+3key evt: control+3
  • Ctrl+#key evt: control+3
  • Ctrl+Shift+3shift+control+3

也就是说;为了获取#字符,我需要按下 shift 键,但报告的键事件是针对该3键的,因为那实际上是我按下的键。

相关内容