diff --git a/builtin/common/settings/dlg_settings.lua b/builtin/common/settings/dlg_settings.lua index 371665c3bb..ee0f39ed4d 100644 --- a/builtin/common/settings/dlg_settings.lua +++ b/builtin/common/settings/dlg_settings.lua @@ -616,6 +616,14 @@ local function get_formspec(dialogdata) if show_reset then local default = comp.setting.default + if comp.setting.type == "key" then + default = (default ~= "") + and core.get_key_description(default) + + --~ Indicates that the action does not have a corresponding keybinding. + or fgettext_ne("Not bound") + end + local reset_tooltip = default and fgettext("Reset setting to default ($1)", tostring(default)) or fgettext("Reset setting to default") diff --git a/src/script/lua_api/l_menu_common.cpp b/src/script/lua_api/l_menu_common.cpp index 6f8bb2bbb0..9e2e7a6c39 100644 --- a/src/script/lua_api/l_menu_common.cpp +++ b/src/script/lua_api/l_menu_common.cpp @@ -52,6 +52,16 @@ int ModApiMenuCommon::l_normalize_keycode(lua_State *L) } +int ModApiMenuCommon::l_get_key_description(lua_State *L) +{ + const char *keystr = luaL_checkstring(L, 1); + KeyPress kp(keystr); + std::string name = kp.name(); + lua_pushstring(L, name.c_str()); + return 1; +} + + void ModApiMenuCommon::Initialize(lua_State *L, int top) { API_FCT(gettext); @@ -59,6 +69,7 @@ void ModApiMenuCommon::Initialize(lua_State *L, int top) API_FCT(driver_supports_shadows); API_FCT(irrlicht_device_supports_touch); API_FCT(normalize_keycode); + API_FCT(get_key_description); } diff --git a/src/script/lua_api/l_menu_common.h b/src/script/lua_api/l_menu_common.h index 3678eec9e6..246dccca4a 100644 --- a/src/script/lua_api/l_menu_common.h +++ b/src/script/lua_api/l_menu_common.h @@ -15,6 +15,7 @@ private: static int l_driver_supports_shadows(lua_State *L); static int l_irrlicht_device_supports_touch(lua_State *L); static int l_normalize_keycode(lua_State *L); + static int l_get_key_description(lua_State *L); public: static void Initialize(lua_State *L, int top);