在 nsDialogs 中处理键盘导航

Handling keyboard navigation in nsDialogs

我正在使用 nsDialogs 在我的应用程序安装程序中创建一个自定义页面,用户可以在其中选择标准安装和便携式安装。

为此,我通过 NSD_CreateRadioButton 创建了两个单选按钮控件,以便用户可以在两种安装模式之间做出选择。

收到盲人用户的反馈后,我想添加通过键盘在这两个单选按钮之间导航的可能性。到目前为止,按 Tab 键会直接导航到下方导航栏中的下一个按钮,而不是导航到 . 向上箭头/向下箭头无效。

如何使用 nsDialogs 为键盘导航添加这种可能性?

如果您在 nsDialogs.nsh 中使用 ${NSD_Create*} 宏,那么将为按钮控件设置 WS_TABSTOP 样式,您可以 Tab他们。但是,Tab 键顺序是:对话框中按钮之前的底部按钮。

分配 access key 以允许用户直接访问控件。您可以通过在特定字符前的文本标签中添加一个符号 (&) 来实现:

${NSD_CreateRadioButton} 0 13u 100% 15u "Click &Me" ; Activate by pressing Alt+M
Pop [=10=]
${NSD_CreateRadioButton} 0 30u 100% 15u "&Or Me"
Pop [=10=]

一旦其中一个单选按钮获得焦点,箭头键也应该可以使用。如果您有多组不相关的单选按钮,WS_GROUP 样式也在键盘导航中发挥作用。

通过试验@Anders 提供的建议,我找到了解决这个问题的方法。

在两次调用 NSD_CreateRadioButton 之间,我又调用了一次 NSD_CreateLabel,这显然混淆了两个单选按钮之间的分组。

当我通过对 NSD_CreateRadioButton 的两次后续调用创建单选按钮,然后添加描述标签时,通过 Arrow upArrow down 进行导航 有效。如果中间有另一个对 NSD_Create* 的调用,它会破坏分组。