1

这个最小的示例创建了一个带有按钮小部件的 Motif 窗口。

#include <Xm/PushB.h>

int main(int argc, char **argv) {
  XtAppContext app;
  Widget       toplevel, b;
  char         *translations="<Key>Escape: ArmAndActivate()\n\
                              <Key>a:      ArmAndActivate()";

  toplevel = XtVaOpenApplication(&app, "tl", NULL, 0, &argc, argv, NULL,
                                 sessionShellWidgetClass, NULL);
  
  b = XtVaCreateManagedWidget("button", xmPushButtonWidgetClass, toplevel, NULL);
  XtOverrideTranslations(b, XtParseTranslationTable(translations));

  XtRealizeWidget(toplevel);
  XtAppMainLoop(app);
  return(0);
}

两者Esca都映射到相同的动作, ArmAndActivate,但小部件仅响应a按键,而不 响应Esc我怎样才能让它响应Esc请注意,这 Escape确实是根据xev.

4

1 回答 1

0

EscapeosfCancelMotif 虚拟绑定;从这个意义上说,它已经被“占领”了。所以使用

<Key>osfCancel: ArmAndActivate()

可以通过~/.motifbind文件修改虚拟绑定,请参阅The Motif Programming Modelman VirtualBindings.

于 2021-03-16T19:19:27.190 回答