Better fix for accelerator menus using "Back" (previously named "BkSp") key
Use the wxWidgets official accelerator key string for WXK_BACK (this is "Back") in menuitems instead of "BkSp" Also when reading the hotkey config file, avoid to set a hotkey to unassigned when its name is not found in list. The default value is used. Unassigned hotkey use <unassigned> as key name (and 0 as key code) in file.
This commit is contained in:
parent
182b8a32df
commit
e2c6422838
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015 Jean-Pierre Charras, j-p.charras at wanadoo.fr
|
* Copyright (C) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2010-2011 Wayne Stambaugh <stambaughw@verizon.net>
|
* Copyright (C) 2010-2011 Wayne Stambaugh <stambaughw@verizon.net>
|
||||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -94,6 +94,7 @@ struct hotkey_name_descr
|
||||||
* "Space","Ctrl+Space","Alt+Space" or
|
* "Space","Ctrl+Space","Alt+Space" or
|
||||||
* "Alt+A","Ctrl+F1", ...
|
* "Alt+A","Ctrl+F1", ...
|
||||||
*/
|
*/
|
||||||
|
#define KEY_NON_FOUND -1
|
||||||
static struct hotkey_name_descr hotkeyNameList[] =
|
static struct hotkey_name_descr hotkeyNameList[] =
|
||||||
{
|
{
|
||||||
{ wxT( "F1" ), WXK_F1 },
|
{ wxT( "F1" ), WXK_F1 },
|
||||||
|
@ -112,7 +113,7 @@ static struct hotkey_name_descr hotkeyNameList[] =
|
||||||
{ wxT( "Esc" ), WXK_ESCAPE },
|
{ wxT( "Esc" ), WXK_ESCAPE },
|
||||||
{ wxT( "Del" ), WXK_DELETE },
|
{ wxT( "Del" ), WXK_DELETE },
|
||||||
{ wxT( "Tab" ), WXK_TAB },
|
{ wxT( "Tab" ), WXK_TAB },
|
||||||
{ wxT( "BkSp" ), WXK_BACK },
|
{ wxT( "Back" ), WXK_BACK },
|
||||||
{ wxT( "Ins" ), WXK_INSERT },
|
{ wxT( "Ins" ), WXK_INSERT },
|
||||||
|
|
||||||
{ wxT( "Home" ), WXK_HOME },
|
{ wxT( "Home" ), WXK_HOME },
|
||||||
|
@ -129,8 +130,10 @@ static struct hotkey_name_descr hotkeyNameList[] =
|
||||||
|
|
||||||
{ wxT( "Space" ), WXK_SPACE },
|
{ wxT( "Space" ), WXK_SPACE },
|
||||||
|
|
||||||
|
{ wxT( "<unassigned>" ), 0 },
|
||||||
|
|
||||||
// Do not change this line: end of list
|
// Do not change this line: end of list
|
||||||
{ wxT( "" ), 0 }
|
{ wxT( "" ), KEY_NON_FOUND }
|
||||||
};
|
};
|
||||||
|
|
||||||
// name of modifier keys.
|
// name of modifier keys.
|
||||||
|
@ -169,9 +172,6 @@ wxString KeyNameFromKeyCode( int aKeycode, bool* aIsFound )
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
// Assume keycode of 0 is "unassigned"
|
// Assume keycode of 0 is "unassigned"
|
||||||
if( aKeycode == 0 )
|
|
||||||
return wxT( "<unassigned>");
|
|
||||||
|
|
||||||
if( (aKeycode & GR_KB_CTRL) != 0 )
|
if( (aKeycode & GR_KB_CTRL) != 0 )
|
||||||
modifier << MODIFIER_CTRL;
|
modifier << MODIFIER_CTRL;
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ wxString KeyNameFromKeyCode( int aKeycode, bool* aIsFound )
|
||||||
{
|
{
|
||||||
for( ii = 0; ; ii++ )
|
for( ii = 0; ; ii++ )
|
||||||
{
|
{
|
||||||
if( hotkeyNameList[ii].m_KeyCode == 0 ) // End of list
|
if( hotkeyNameList[ii].m_KeyCode == KEY_NON_FOUND ) // End of list
|
||||||
{
|
{
|
||||||
keyname = wxT( "<unknown>" );
|
keyname = wxT( "<unknown>" );
|
||||||
break;
|
break;
|
||||||
|
@ -260,13 +260,6 @@ wxString AddHotkeyName( const wxString& aText, EDA_HOTKEY** aList,
|
||||||
switch( aShortCutType )
|
switch( aShortCutType )
|
||||||
{
|
{
|
||||||
case IS_HOTKEY:
|
case IS_HOTKEY:
|
||||||
#ifdef __LINUX__
|
|
||||||
// In menus, some special keys (BkSp) must be coded by the
|
|
||||||
// actual ASCII value, not an equivalent name
|
|
||||||
if( keyname.EndsWith( "BkSp") )
|
|
||||||
keyname.Replace( "BkSp", "\b" );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
msg << wxT( "\t" ) << keyname;
|
msg << wxT( "\t" ) << keyname;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -321,13 +314,6 @@ wxString AddHotkeyName( const wxString& aText,
|
||||||
switch( aShortCutType )
|
switch( aShortCutType )
|
||||||
{
|
{
|
||||||
case IS_HOTKEY:
|
case IS_HOTKEY:
|
||||||
#ifdef __LINUX__
|
|
||||||
// In menus, some special keys (BkSp) must be coded by the
|
|
||||||
// actual ASCII value, not an equivalent name
|
|
||||||
if( keyname.EndsWith( "BkSp") )
|
|
||||||
keyname.Replace( "BkSp", "\b" );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
msg << wxT( "\t" ) << keyname;
|
msg << wxT( "\t" ) << keyname;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -391,7 +377,7 @@ wxString KeyNameFromCommandId( EDA_HOTKEY** aList, int aCommandId )
|
||||||
*/
|
*/
|
||||||
int KeyCodeFromKeyName( const wxString& keyname )
|
int KeyCodeFromKeyName( const wxString& keyname )
|
||||||
{
|
{
|
||||||
int ii, keycode = 0;
|
int ii, keycode = KEY_NON_FOUND;
|
||||||
|
|
||||||
// Search for modifiers: Ctrl+ Alt+ and Shift+
|
// Search for modifiers: Ctrl+ Alt+ and Shift+
|
||||||
// Note: on Mac OSX, the Cmd key is equiv here to Ctrl
|
// Note: on Mac OSX, the Cmd key is equiv here to Ctrl
|
||||||
|
@ -439,7 +425,7 @@ int KeyCodeFromKeyName( const wxString& keyname )
|
||||||
return keycode;
|
return keycode;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( ii = 0; hotkeyNameList[ii].m_KeyCode != 0; ii++ )
|
for( ii = 0; hotkeyNameList[ii].m_KeyCode != KEY_NON_FOUND; ii++ )
|
||||||
{
|
{
|
||||||
if( key.CmpNoCase( hotkeyNameList[ii].m_Name ) == 0 )
|
if( key.CmpNoCase( hotkeyNameList[ii].m_Name ) == 0 )
|
||||||
{
|
{
|
||||||
|
@ -748,7 +734,11 @@ void ParseHotkeyConfig( const wxString& data,
|
||||||
|
|
||||||
if( hk_decr->m_InfoMsg == fctname )
|
if( hk_decr->m_InfoMsg == fctname )
|
||||||
{
|
{
|
||||||
hk_decr->m_KeyCode = KeyCodeFromKeyName( keyname );
|
int keycode = KeyCodeFromKeyName( keyname );
|
||||||
|
|
||||||
|
if( keycode != KEY_NON_FOUND ) // means the key name is found in list or unassigned
|
||||||
|
hk_decr->m_KeyCode = keycode;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue