【问题标题】:is there some c++ library / source similar to boost program_options but for *keyboard shortcut auto-gen help* ?是否有一些类似于 boost program_options 但用于 *keyboard shortcut auto-gen help* 的 c++ 库/源?
【发布时间】:2011-11-27 10:52:31
【问题描述】:

所以,我有一些带有键绑定的 c++ 源代码,例如:

  switch( keypressed )
{
case 'c':
  cam_handle->Yaw(min_angle );
  break;
case 'd':
  cam_handle->Yaw( -min_angle );
  break;
case 's':
  cam_handle->Pitch(min_angle );
  break;
case 'x':
  cam_handle->Pitch( -min_angle );
  break;
case 'z':
  cam_handle->Roll( min_angle );
  break;
case 'a':
  cam_handle->Roll( -min_angle );

我总是忘记愚蠢的键是什么并且必须猜测,它们可能会改变,或者添加新的键等等。有没有一些快速的方法来自动生成帮助或“白痴指南”弹出窗口来说明什么捷径是什么?如果有人不知道 boost::program_options 但可以回答,这里有一个例子:

int options(int ac, char ** av, Options& opts) {
// Declare the supported options.
po::options_description desc("Allowed options");
desc.add_options()
  ("help", "Produce help message.")
  ("width,w", po::value<int>(&opts.frameWidth)->default_value(640),"frame width")
  ("height,h", po::value<int>(&opts.frameHeight)->default_value(480),"frame height")
  ("port,p", po::value<string>(&opts.port)->default_value("5001"),"port");

 po::variables_map vm;
 po::store(po::command_line_parser(ac, av).options(desc).allow_unregistered().run(),vm);
 po::notify(vm);

 if (vm.count("help")) {
  cout << desc << "\n";
  return 1;
 }

 return 0;
}

所以,我不必“RTFC”就知道如何使用可执行文件,我只需说“./myapp --help”,boost 就可以很好地自动生成帮助等等。键盘快捷键映射是否有类似的东西,其中击键取代了命令行标志的作用? (在 C++ 中。原则上 C 也是可以的,但我怀疑它是否能像 boost 一样优雅。)

【问题讨论】:

  • 如果您有任何需要的选项,您应该在 po::notify(vm) 之前运行您的 help option code,因为它会处理错误,例如缺少选项。由于您的示例中没有它们,因此您的代码很好。但是,这是值得关注的。

标签: c++ keyboard-shortcuts boost-program-options


【解决方案1】:

在我看来,这是两双不同的鞋子。如果您想创建和发布有关您的应用程序的文档,我认为通过--help 选项使其可访问可能不是最好的。对于小程序来说可能没问题,但boost::program_options 肯定不是处理这个问题的最佳方式。

如果您想进行--help 开关,您必须查找main 函数的argc 和argv 参数:

int main(int argc, char** argv)
{
    for(int i = 0; i < argc; ++i)
    {
        if(std::string(argv[i]) == "--help")
        {
            // TODO print usage keys and quit
        }
    }
    ...
}

我认为,理想的方法是使键可配置,并将具有相应键的操作保存到配置文件中,该配置文件将在您的应用程序中进行解释。因此,用户始终可以看到您的应用程序可用的操作,也可以对其进行配置。

【讨论】:

  • 加上 0.5,四舍五入 :-) 听起来像“不”,没有简单的方法。我猜配置文件是有道理的,我只是想也许那里有一个自动生成的弹出窗口制造商来显示键绑定。配置文件并不比硬编码好多少,因为 c++ 是为那些可以阅读 c++ 并将其集成到某个地方的人传播的,而不是从头开始编写应用程序。
  • Arr 这又让我大吃一惊....开始与一个使用德语键盘布局的人合作,配置文件或其他东西是必须的,因为现在我们正在为是否“ z,x" 或 "y,x" 是 +/- 切换,而 "r,t,y" 与 "r,t,z" 作为 3 轴旋转键 - 每个人都想要逻辑上相邻的键!
猜你喜欢
  • 2010-09-08
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多