在 wxWidgets 中获取键名

Getting key name in wxWidgets

在 wxWidgets 中,我正在捕获 wxKeyDown 事件,这给了我一个 wxKeyEvent。我需要获取按下的键的名称(例如 "F1"、"Del"、"Home"、"A")以显示给用户,但是我找到的最接近的名称是 wxKeyEvent::GetUnicodeKey():

void OnKeyDown(wxKeyEvent &event)
{
    wxMessageBox(wxString::Format("Key pressed: %c", event.GetUnicodeKey()));
}

我找到的唯一其他解决方案是使用带有没有 Unicode 表示的键的 switch 语句(例如 Del)。有没有其他方法可以检索按下的键的名称?

没有内置函数来获取键的名称,但您可以在 keyboard sample.[=13 中了解如何为大多数(甚至可能是所有)特殊键执行此操作=]

编辑:实际上有一个功能我没有想到:wxAcceleratorEntry::ToString()。它相当迂回,但您可能可以使用 wxAcceleratorEntry(0 /* no modifiers */, keycode).ToString() 到 return 对密钥的合理用户友好描述。