在wxWidgets中获取键名

Getting key name in wxWidgets

本文关键字:获取 wxWidgets      更新时间:2023-10-16

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

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

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

没有内置函数来获取键名,但是您可以看到如何在键盘示例中为大多数(甚至可能是所有)特殊键执行此操作。

编辑:实际上有一个函数我没有想到:wxAcceleratorEntry::ToString()。这是相当迂回的,但是您可能可以使用wxAcceleratorEntry(0 /* no modifiers */, keycode).ToString()来返回一个合理的用户友好的键描述。