KiCad PCB EDA Suite
pcbnew/hotkeys.cpp
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2007-2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
5  * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, you may find one here:
19  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20  * or you may search the http://www.gnu.org website for the version 2 license,
21  * or you may write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23  */
24 
29 #include <fctsys.h>
30 #include <pcbnew.h>
31 #include <pcb_edit_frame.h>
32 #include <footprint_viewer_frame.h>
33 #include <pcbnew_id.h>
34 
35 #include <hotkeys.h>
36 
37 // Remark: the hotkey message info is used as keyword in hotkey config files and
38 // as comments in help windows, therefore translated only when displayed
39 // they are marked _HKI to be extracted by translation tools
40 // See hotkeys_basic.h for more info
41 
42 
43 /* How to add a new hotkey:
44  * add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION.
45  * add a new EDA_HOTKEY entry like:
46  * static EDA_HOTKEY HkMyNewEntry(_HKI("Command Label"), MY_NEW_ID_FUNCTION, default key value);
47  * "Command Label" is the name used in hotkey list display, and the identifier in the
48  * hotkey list file MY_NEW_ID_FUNCTION is an equivalent id function used in the switch
49  * in OnHotKey() function.
50  * default key value is the default hotkey for this command. Can be overridden by the user
51  * hotkey list file
52  * add the HkMyNewEntry pointer in the s_board_edit_Hotkey_List list ( or/and the
53  * s_module_edit_Hotkey_List list)
54  * Add the new code in the switch in OnHotKey() function.
55  * Note: when the variable itemCurrentlyEdited is true, an item is currently edited.
56  * This can be useful if the new function cannot be executed while an item is currently
57  * being edited ( For example, one cannot start a new wire when a component is moving.)
58  *
59  * Note: If a hotkey is a special key, be sure the corresponding wxWidget keycode (WXK_XXXX)
60  * is handled in the hotkey_name_descr s_Hotkey_Name_List list (see hotkeys_basic.cpp)
61  * and see this list for some ascii keys (space ...)
62  */
63 
64 // Hotkey list:
65 
66 // mouse click command:
67 static EDA_HOTKEY HkMouseLeftClick( _HKI( "Mouse Left Click" ),
68  HK_LEFT_CLICK, WXK_RETURN, 0 );
69 static EDA_HOTKEY HkMouseLeftDClick( _HKI( "Mouse Left Double Click" ),
70  HK_LEFT_DCLICK, WXK_END, 0 );
71 
72 static EDA_HOTKEY HkSwitch2CopperLayer( _HKI( "Switch to Copper (B.Cu) layer" ),
73  HK_SWITCH_LAYER_TO_COPPER, WXK_PAGEDOWN );
74 
75 static EDA_HOTKEY HkSwitch2ComponentLayer( _HKI( "Switch to Component (F.Cu) layer" ),
76  HK_SWITCH_LAYER_TO_COMPONENT, WXK_PAGEUP );
77 
78 static EDA_HOTKEY HkSwitch2InnerLayer1( _HKI( "Switch to Inner layer 1" ),
79  HK_SWITCH_LAYER_TO_INNER1, WXK_F5 );
80 static EDA_HOTKEY HkSwitch2InnerLayer2( _HKI( "Switch to Inner layer 2" ),
81  HK_SWITCH_LAYER_TO_INNER2, WXK_F6 );
82 static EDA_HOTKEY HkSwitch2InnerLayer3( _HKI( "Switch to Inner layer 3" ),
83  HK_SWITCH_LAYER_TO_INNER3, WXK_F7 );
84 static EDA_HOTKEY HkSwitch2InnerLayer4( _HKI( "Switch to Inner layer 4" ),
85  HK_SWITCH_LAYER_TO_INNER4, WXK_F8 );
86 static EDA_HOTKEY HkSwitch2InnerLayer5( _HKI( "Switch to Inner layer 5" ),
88 static EDA_HOTKEY HkSwitch2InnerLayer6( _HKI( "Switch to Inner layer 6" ),
90 
91 static EDA_HOTKEY HkSwitch2NextCopperLayer( _HKI( "Switch to Next Layer" ),
93 static EDA_HOTKEY HkSwitch2PreviousCopperLayer( _HKI( "Switch to Previous Layer" ),
95 
96 static EDA_HOTKEY HkFindItem( _HKI( "Find Item" ), HK_FIND_ITEM, 'F' + GR_KB_CTRL );
97 static EDA_HOTKEY HkBackspace( _HKI( "Delete Track Segment" ), HK_BACK_SPACE, WXK_BACK );
98 static EDA_HOTKEY HkAddNewTrack( _HKI( "Add New Track" ), HK_ADD_NEW_TRACK, 'X' );
99 
100 static EDA_HOTKEY HkRouteDiffPair( _HKI( "Route Differential Pair (Modern Toolset only)" ),
101  HK_ROUTE_DIFF_PAIR, '6' );
102 static EDA_HOTKEY HkRouteTuneSingle( _HKI( "Tune Single Track (Modern Toolset only)" ),
103  HK_ROUTE_TUNE_SINGLE, '7' );
104 static EDA_HOTKEY HkRouteTuneDiffPair( _HKI( "Tune Differential Pair Length (Modern Toolset only)" ),
106 static EDA_HOTKEY HkRouteTuneSkew( _HKI( "Tune Differential Pair Skew (Modern Toolset only)" ),
107  HK_ROUTE_TUNE_SKEW, '9' );
108 
109 static EDA_HOTKEY HkAddThroughVia( _HKI( "Add Through Via" ), HK_ADD_THROUGH_VIA, 'V' );
110 static EDA_HOTKEY HkSelLayerAndAddThroughVia( _HKI( "Select Layer and Add Through Via" ),
112 static EDA_HOTKEY HkAddMicroVia( _HKI( "Add MicroVia" ), HK_ADD_MICROVIA, 'V' + GR_KB_CTRL );
113 static EDA_HOTKEY HkAddBlindBuriedVia( _HKI( "Add Blind/Buried Via" ), HK_ADD_BLIND_BURIED_VIA, 'V' + GR_KB_ALT + GR_KB_SHIFT );
114 static EDA_HOTKEY HkSelLayerAndAddBlindBuriedVia( _HKI( "Select Layer and Add Blind/Buried Via" ),
116 static EDA_HOTKEY HkSwitchTrackPosture( _HKI( "Switch Track Posture" ), HK_SWITCH_TRACK_POSTURE, '/' );
117 static EDA_HOTKEY HkDragTrackKeepSlope( _HKI( "Drag Track Keep Slope" ), HK_DRAG_TRACK_KEEP_SLOPE, 'D' );
118 static EDA_HOTKEY HkPlaceItem( _HKI( "Place Item" ), HK_PLACE_ITEM, 'P' );
119 static EDA_HOTKEY HkEditBoardItem( _HKI( "Edit Item" ), HK_EDIT_ITEM, 'E' );
120 static EDA_HOTKEY HkEditWithModedit( _HKI( "Edit with Footprint Editor" ), HK_EDIT_MODULE_WITH_MODEDIT, 'E' + GR_KB_CTRL );
121 static EDA_HOTKEY HkFlipItem( _HKI( "Flip Item" ), HK_FLIP_ITEM, 'F' );
122 static EDA_HOTKEY HkRotateItem( _HKI( "Rotate Item" ), HK_ROTATE_ITEM, 'R' );
123 static EDA_HOTKEY HkRotateItemClockwise( _HKI( "Rotate Item Clockwise (Modern Toolset only)" ),
125 static EDA_HOTKEY HkMoveItem( _HKI( "Move Item" ), HK_MOVE_ITEM, 'M' );
126 static EDA_HOTKEY HkMoveItemExact( _HKI( "Move Item Exactly" ), HK_MOVE_ITEM_EXACT, 'M' + GR_KB_CTRL );
127 static EDA_HOTKEY HkPositionItemRelative( _HKI( "Position Item Relative" ), HK_POSITION_RELATIVE, 'R' + GR_KB_CTRL );
128 static EDA_HOTKEY HkDuplicateItem( _HKI( "Duplicate Item" ), HK_DUPLICATE_ITEM, 'D' + GR_KB_CTRL );
129 static EDA_HOTKEY HkDuplicateItemAndIncrement( _HKI( "Duplicate Item and Increment" ),
131 static EDA_HOTKEY HkCreateArray( _HKI( "Create Array" ), HK_CREATE_ARRAY, 'T' + GR_KB_CTRL );
132 static EDA_HOTKEY HkCopyItem( _HKI( "Copy Item" ), HK_COPY_ITEM, 'C' );
133 static EDA_HOTKEY HkDragFootprint( _HKI( "Drag Item" ), HK_DRAG_ITEM, 'G' );
134 static EDA_HOTKEY HkGetAndMoveFootprint( _HKI( "Get and Move Footprint" ), HK_GET_AND_MOVE_FOOTPRINT, 'T' );
135 static EDA_HOTKEY HkLock_Unlock_Footprint( _HKI( "Lock/Unlock Footprint" ), HK_LOCK_UNLOCK_FOOTPRINT, 'L' );
136 static EDA_HOTKEY HkDelete( _HKI( "Delete Track or Footprint" ), HK_DELETE, WXK_DELETE );
137 static EDA_HOTKEY HkResetLocalCoord( _HKI( "Reset Local Coordinates" ), HK_RESET_LOCAL_COORD, ' ' );
138 static EDA_HOTKEY HkSwitchHighContrastMode( _HKI( "Toggle High Contrast Mode" ), HK_SWITCH_HIGHCONTRAST_MODE,'H');
139 
140 static EDA_HOTKEY HkSetGridOrigin( _HKI( "Set Grid Origin" ), HK_SET_GRID_ORIGIN, 'S' );
141 static EDA_HOTKEY HkResetGridOrigin( _HKI( "Reset Grid Origin" ), HK_RESET_GRID_ORIGIN, 'Z' );
142 
143 static EDA_HOTKEY HkCanvasDefault( _HKI( "Switch to Legacy Toolset (not all features will be available" ),
145 #ifdef __WXMAC__
146  GR_KB_ALT +
147 #endif
148  WXK_F9 );
149 static EDA_HOTKEY HkCanvasOpenGL( _HKI( "Switch to Modern Toolset with hardware-accelerated graphics (recommended)" ),
151 #ifdef __WXMAC__
152  GR_KB_ALT +
153 #endif
154  WXK_F11 );
155 static EDA_HOTKEY HkCanvasCairo( _HKI( "Switch to Modern Toolset with software graphics (fall-back)" ),
157 #ifdef __WXMAC__
158  GR_KB_ALT +
159 #endif
160  WXK_F12 );
161 
162 static EDA_HOTKEY HkZoneFillOrRefill( _HKI( "Fill or Refill All Zones" ),
163  HK_ZONE_FILL_OR_REFILL, 'B' );
164 static EDA_HOTKEY HkZoneRemoveFilled( _HKI( "Remove Filled Areas in All Zones" ),
166 /* Fit on Screen */
167 #if !defined( __WXMAC__ )
168 static EDA_HOTKEY HkZoomAuto( _HKI( "Zoom Auto" ), HK_ZOOM_AUTO, WXK_HOME );
169 #else
170 static EDA_HOTKEY HkZoomAuto( _HKI( "Zoom Auto" ), HK_ZOOM_AUTO, GR_KB_CTRL + '0' );
171 #endif
172 
173 static EDA_HOTKEY HkZoomCenter( _HKI( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 );
174 
175 /* Refresh Screen */
176 #if !defined( __WXMAC__ )
177 static EDA_HOTKEY HkZoomRedraw( _HKI( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 );
178 #else
179 static EDA_HOTKEY HkZoomRedraw( _HKI( "Zoom Redraw" ), HK_ZOOM_REDRAW, GR_KB_CTRL + 'R' );
180 #endif
181 
182 /* Zoom In */
183 #if !defined( __WXMAC__ )
184 static EDA_HOTKEY HkZoomIn( _HKI( "Zoom In" ), HK_ZOOM_IN, WXK_F1 );
185 #else
186 static EDA_HOTKEY HkZoomIn( _HKI( "Zoom In" ), HK_ZOOM_IN, GR_KB_CTRL + '+' );
187 #endif
188 
189 /* Zoom Out */
190 #if !defined( __WXMAC__ )
191 static EDA_HOTKEY HkZoomOut( _HKI( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 );
192 #else
193 static EDA_HOTKEY HkZoomOut( _HKI( "Zoom Out" ), HK_ZOOM_OUT, GR_KB_CTRL + '-' );
194 #endif
195 
196 static EDA_HOTKEY HkZoomSelection( _HKI( "Zoom to Selection" ), HK_ZOOM_SELECTION,
197  GR_KB_CTRL + WXK_F5, ID_ZOOM_SELECTION );
198 
199 static EDA_HOTKEY Hk3DViewer( _HKI( "3D Viewer" ), HK_3D_VIEWER, GR_KB_ALT + '3' );
200 
201 static EDA_HOTKEY HkHelp( _HKI( "Help (this window)" ), HK_HELP, GR_KB_CTRL + WXK_F1 );
202 
203 static EDA_HOTKEY HkSwitchTrackWidthToNext( _HKI( "Switch Track Width To Next" ),
205 
206 static EDA_HOTKEY HkSwitchTrackWidthToPrevious( _HKI( "Switch Track Width To Previous" ),
208  + GR_KB_CTRL );
209 
210 static EDA_HOTKEY HkSwitchGridToFastGrid1( _HKI( "Switch Grid To Fast Grid1" ),
212 
213 static EDA_HOTKEY HkSwitchGridToFastGrid2( _HKI( "Switch Grid To Fast Grid2" ),
215 
216 static EDA_HOTKEY HkSwitchGridToNext( _HKI( "Switch Grid To Next" ),
217  HK_SWITCH_GRID_TO_NEXT, 'N' );
218 
219 static EDA_HOTKEY HkSwitchGridToPrevious( _HKI( "Switch Grid To Previous" ),
221 
222 static EDA_HOTKEY HkSwitchUnits( _HKI( "Switch Units" ), HK_SWITCH_UNITS, 'U' + GR_KB_CTRL );
223 
224 static EDA_HOTKEY HkTrackDisplayMode( _HKI( "Track Display Mode" ),
226 
227 static EDA_HOTKEY HkAddModule( _HKI( "Add Footprint" ), HK_ADD_MODULE, 'O' );
228 
229 // These hotkeys work only in GAL canvas, because the legacy canvas using wxDC does not know
230 // the transparency (alpha channel)
231 static EDA_HOTKEY HkIncLayerAlpha( _HKI( "Increment Layer Transparency (Modern Toolset only)" ),
232  HK_INC_LAYER_ALPHA, '}' );
233 
234 static EDA_HOTKEY HkDecLayerAlpha( _HKI( "Decrement Layer Transparency (Modern Toolset only)" ),
235  HK_DEC_LAYER_ALPHA, '{' );
236 
237 // These two are currently unused, and are intentionally not added to a list below.
238 static EDA_HOTKEY HkIncHighContrast( _HKI( "Increment High Contrast" ), HK_HIGHCONTRAST_INC, '>' );
239 static EDA_HOTKEY HkDecHighContrast( _HKI( "Decrement High Contrast" ), HK_HIGHCONTRAST_DEC, '<' );
240 
241 static EDA_HOTKEY HkSelectConnection( _HKI( "Select Trivial Connection" ), HK_SEL_TRIVIAL_CONNECTION, 'U' );
242 
243 static EDA_HOTKEY HkSelectCopper( _HKI( "Select Copper Connection" ), HK_SEL_COPPER_CONNECTION, 'I' );
244 
245 static EDA_HOTKEY HkRoutingOptions( _HKI( "Routing Options" ), HK_ROUTING_OPTIONS, 'E' );
246 
247 static EDA_HOTKEY HkCustomTrackWidth( _HKI( "Custom Track/Via Size" ), HK_CUSTOM_TRACK_WIDTH, 'Q' );
248 
249 static EDA_HOTKEY HkDpDimension( _HKI( "Differential Pair Dimensions" ), HK_DP_DIMENSIONS, 'P' );
250 
251 static EDA_HOTKEY HkViaSizeInc( _HKI( "Increase Via Size" ), HK_VIA_SIZE_INC, '\'' );
252 
253 static EDA_HOTKEY HkViaSizeDec( _HKI( "Decrease Via Size" ), HK_VIA_SIZE_DEC, '\\' );
254 
255 static EDA_HOTKEY HkHighlightNetSelection( _HKI( "Toggle Highlight of Selected Net (Modern Toolset only)" ),
257 
258 // Common: hotkeys_basic.h
259 static EDA_HOTKEY HkNew( _HKI( "New" ), HK_NEW, GR_KB_CTRL + 'N', (int) wxID_NEW );
260 static EDA_HOTKEY HkOpen( _HKI( "Open" ), HK_OPEN, GR_KB_CTRL + 'O', (int) wxID_OPEN );
261 static EDA_HOTKEY HkSave( _HKI( "Save" ), HK_SAVE, GR_KB_CTRL + 'S', (int) wxID_SAVE );
262 static EDA_HOTKEY HkSaveAs( _HKI( "Save As" ), HK_SAVEAS, GR_KB_SHIFT + GR_KB_CTRL + 'S', (int) wxID_SAVEAS );
263 static EDA_HOTKEY HkPrint( _HKI( "Print" ), HK_PRINT, GR_KB_CTRL + 'P', (int) wxID_PRINT );
264 
265 static EDA_HOTKEY HkUndo( _HKI( "Undo" ), HK_UNDO, GR_KB_CTRL + 'Z', (int) wxID_UNDO );
266 
267 #if !defined( __WXMAC__ )
268 static EDA_HOTKEY HkRedo( _HKI( "Redo" ), HK_REDO, GR_KB_CTRL + 'Y', (int) wxID_REDO );
269 #else
270 static EDA_HOTKEY HkRedo( _HKI( "Redo" ), HK_REDO,
271  GR_KB_SHIFT + GR_KB_CTRL + 'Z',
272  (int) wxID_REDO );
273 #endif
274 
275 static EDA_HOTKEY HkEditCut( _HKI( "Cut" ), HK_EDIT_CUT, GR_KB_CTRL + 'X', (int) wxID_CUT );
276 static EDA_HOTKEY HkEditCopy( _HKI( "Copy" ), HK_EDIT_COPY, GR_KB_CTRL + 'C', (int) wxID_COPY );
277 static EDA_HOTKEY HkEditPaste( _HKI( "Paste" ), HK_EDIT_PASTE, GR_KB_CTRL + 'V', (int) wxID_PASTE );
278 
279 static EDA_HOTKEY HkToggleCursor( _HKI( "Toggle Cursor Display (Modern Toolset only)" ),
281 static EDA_HOTKEY HkMeasureTool( _HKI( "Measure Distance (Modern Toolset only)" ),
283 
284 // List of common hotkey descriptors
286 {
288  &HkUndo, &HkRedo,
297  &HkMeasureTool,
298  NULL
299 };
300 
301 // common hotkey descriptors only useful in footprint viewer
303 {
309  NULL
310 };
311 
312 // List of hotkey descriptors for Pcbnew
314 {
316  &HkBackspace,
317  &HkAddNewTrack,
323  &HkAddMicroVia,
328  &HkMoveItem,
329  &HkFlipItem,
350  NULL
351 };
352 
353 // List of hotkey descriptors for the module editor
359  NULL
360  };
361 
362 // List of hotkey descriptors for the module viewer
363 // Currently empty
365  NULL
366  };
367 
368 // Keyword Identifiers (tags) in key code configuration file (section names)
369 // (.m_SectionTag member of a EDA_HOTKEY_CONFIG)
370 static wxString boardEditorSectionTag( wxT( "[pcbnew]" ) );
371 static wxString moduleEditSectionTag( wxT( "[footprinteditor]" ) );
372 
373 // Titles for hotkey editor and hotkey display
374 static wxString commonSectionTitle( _HKI( "Common" ) );
375 static wxString boardEditorSectionTitle( _HKI( "Board Editor" ) );
376 static wxString moduleEditSectionTitle( _HKI( "Footprint Editor" ) );
377 
378 // list of sections and corresponding hotkey list for Pcbnew
379 // (used to create an hotkey config file, and edit hotkeys )
381  { &g_CommonSectionTag, common_Hotkey_List, &commonSectionTitle },
382  { &boardEditorSectionTag, board_edit_Hotkey_List, &boardEditorSectionTitle },
383  { &moduleEditSectionTag, module_edit_Hotkey_List, &moduleEditSectionTitle },
384  { NULL, NULL, NULL }
385 };
386 
387 // list of sections and corresponding hotkey list for the board editor
388 // (used to list current hotkeys in the board editor)
390  { &g_CommonSectionTag, common_Hotkey_List, &commonSectionTitle },
391  { &boardEditorSectionTag, board_edit_Hotkey_List, &boardEditorSectionTitle },
392  { NULL, NULL, NULL }
393 };
394 
395 // list of sections and corresponding hotkey list for the footprint editor
396 // (used to list current hotkeys in the module editor)
398  { &g_CommonSectionTag, common_Hotkey_List, &commonSectionTitle },
399  { &moduleEditSectionTag, module_edit_Hotkey_List, &moduleEditSectionTitle },
400  { NULL, NULL, NULL }
401 };
402 
403 // list of sections and corresponding hotkey list for the footprint viewer
404 // (used to list current hotkeys in the module viewer)
406  { &g_CommonSectionTag, common_basic_Hotkey_List, &commonSectionTitle },
407  { NULL, NULL, NULL }
408 };
409 
410 
412 {
413  EDA_HOTKEY* HK_Descr = GetDescriptorFromCommand( aCommand, common_Hotkey_List );
414 
415  if( HK_Descr == NULL )
416  HK_Descr = GetDescriptorFromCommand( aCommand, module_viewer_Hotkey_List );
417 
418  return HK_Descr;
419 }
420 
421 
422 bool FOOTPRINT_VIEWER_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition,
423  EDA_ITEM* aItem )
424 {
425  if( aHotKey == 0 )
426  return false;
427 
428  wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
429  cmd.SetEventObject( this );
430 
431  /* Convert lower to upper case (the usual toupper function has problem with non ascii
432  * codes like function keys */
433  if( (aHotKey >= 'a') && (aHotKey <= 'z') )
434  aHotKey += 'A' - 'a';
435 
436  EDA_HOTKEY* HK_Descr = GetDescriptorFromHotkey( aHotKey, common_Hotkey_List );
437 
438  if( HK_Descr == NULL )
439  HK_Descr = GetDescriptorFromHotkey( aHotKey, module_viewer_Hotkey_List );
440 
441  if( HK_Descr == NULL )
442  return false;
443 
444  switch( HK_Descr->m_Idcommand )
445  {
446  default:
447  case HK_NOT_FOUND:
448  return false;
449 
450  case HK_HELP: // Display Current hotkey list
451  DisplayHotkeyList( this, g_Module_Viewer_Hotkeys_Descr );
452  break;
453 
454  case HK_RESET_LOCAL_COORD: // set local (relative) coordinate origin
456  break;
457 
458  case HK_LEFT_CLICK:
459  OnLeftClick( aDC, aPosition );
460  break;
461 
462  case HK_LEFT_DCLICK: // Simulate a double left click: generate 2 events
463  OnLeftClick( aDC, aPosition );
464  OnLeftDClick( aDC, aPosition );
465  break;
466 
467  case HK_SWITCH_UNITS:
468  cmd.SetId( (g_UserUnit == INCHES) ?
470  GetEventHandler()->ProcessEvent( cmd );
471  break;
472 
473  case HK_ZOOM_IN:
474  cmd.SetId( ID_KEY_ZOOM_IN );
475  GetEventHandler()->ProcessEvent( cmd );
476  break;
477 
478  case HK_ZOOM_OUT:
479  cmd.SetId( ID_KEY_ZOOM_OUT );
480  GetEventHandler()->ProcessEvent( cmd );
481  break;
482 
483  case HK_ZOOM_REDRAW:
484  cmd.SetId( ID_ZOOM_REDRAW );
485  GetEventHandler()->ProcessEvent( cmd );
486  break;
487 
488  case HK_ZOOM_CENTER:
489  cmd.SetId( ID_POPUP_ZOOM_CENTER );
490  GetEventHandler()->ProcessEvent( cmd );
491  break;
492 
493  case HK_ZOOM_AUTO:
494  cmd.SetId( ID_ZOOM_PAGE );
495  GetEventHandler()->ProcessEvent( cmd );
496  break;
497  }
498 
499  return true;
500 }
static EDA_HOTKEY HkDecLayerAlpha(_HKI("Decrement Layer Transparency (Modern Toolset only)"), HK_DEC_LAYER_ALPHA, '{')
static EDA_HOTKEY HkMouseLeftClick(_HKI("Mouse Left Click"), HK_LEFT_CLICK, WXK_RETURN, 0)
static EDA_HOTKEY HkViaSizeDec(_HKI("Decrease Via Size"), HK_VIA_SIZE_DEC, '\\')
static wxString boardEditorSectionTitle(_HKI("Board Editor"))
static EDA_HOTKEY HkEditCut(_HKI("Cut"), HK_EDIT_CUT, GR_KB_CTRL+ 'X',(int) wxID_CUT)
struct EDA_HOTKEY_CONFIG g_Module_Viewer_Hotkeys_Descr[]
static EDA_HOTKEY HkSwitchHighContrastMode(_HKI("Toggle High Contrast Mode"), HK_SWITCH_HIGHCONTRAST_MODE,'H')
Structure EDA_HOTKEY_CONFIG contains the information required to save hot key information to a config...
Definition: hotkeys_basic.h:87
static EDA_HOTKEY HkCanvasOpenGL(_HKI("Switch to Modern Toolset with hardware-accelerated graphics (recommended)"), HK_CANVAS_OPENGL, WXK_F11)
static EDA_HOTKEY HkRouteTuneSingle(_HKI("Tune Single Track (Modern Toolset only)"), HK_ROUTE_TUNE_SINGLE, '7')
static EDA_HOTKEY HkDragTrackKeepSlope(_HKI("Drag Track Keep Slope"), HK_DRAG_TRACK_KEEP_SLOPE, 'D')
bool OnHotKey(wxDC *aDC, int aHotKey, const wxPoint &aPosition, EDA_ITEM *aItem=NULL) override
Function OnHotKey handle hot key events.
static EDA_HOTKEY HkCopyItem(_HKI("Copy Item"), HK_COPY_ITEM, 'C')
static EDA_HOTKEY HkMeasureTool(_HKI("Measure Distance (Modern Toolset only)"), HK_MEASURE_TOOL, 'M'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkZoomIn(_HKI("Zoom In"), HK_ZOOM_IN, WXK_F1)
static EDA_HOTKEY HkDelete(_HKI("Delete Track or Footprint"), HK_DELETE, WXK_DELETE)
struct EDA_HOTKEY_CONFIG g_Module_Editor_Hotkeys_Descr[]
static EDA_HOTKEY HkSwitch2ComponentLayer(_HKI("Switch to Component (F.Cu) layer"), HK_SWITCH_LAYER_TO_COMPONENT, WXK_PAGEUP)
static EDA_HOTKEY HkAddMicroVia(_HKI("Add MicroVia"), HK_ADD_MICROVIA, 'V'+GR_KB_CTRL)
static EDA_HOTKEY HkGetAndMoveFootprint(_HKI("Get and Move Footprint"), HK_GET_AND_MOVE_FOOTPRINT, 'T')
static EDA_HOTKEY HkDpDimension(_HKI("Differential Pair Dimensions"), HK_DP_DIMENSIONS, 'P')
static EDA_HOTKEY HkSwitch2PreviousCopperLayer(_HKI("Switch to Previous Layer"), HK_SWITCH_LAYER_TO_PREVIOUS, '-')
static EDA_HOTKEY HkDuplicateItemAndIncrement(_HKI("Duplicate Item and Increment"), HK_DUPLICATE_ITEM_AND_INCREMENT, 'D'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkSwitch2InnerLayer4(_HKI("Switch to Inner layer 4"), HK_SWITCH_LAYER_TO_INNER4, WXK_F8)
static EDA_HOTKEY HkNew(_HKI("New"), HK_NEW, GR_KB_CTRL+ 'N',(int) wxID_NEW)
static EDA_HOTKEY HkSaveAs(_HKI("Save As"), HK_SAVEAS, GR_KB_SHIFT+GR_KB_CTRL+ 'S',(int) wxID_SAVEAS)
static EDA_HOTKEY HkSelectConnection(_HKI("Select Trivial Connection"), HK_SEL_TRIVIAL_CONNECTION, 'U')
static EDA_HOTKEY HkCustomTrackWidth(_HKI("Custom Track/Via Size"), HK_CUSTOM_TRACK_WIDTH, 'Q')
static EDA_HOTKEY HkCanvasCairo(_HKI("Switch to Modern Toolset with software graphics (fall-back)"), HK_CANVAS_CAIRO, WXK_F12)
static EDA_HOTKEY HkZoomCenter(_HKI("Zoom Center"), HK_ZOOM_CENTER, WXK_F4)
struct EDA_HOTKEY_CONFIG g_Pcbnew_Editor_Hotkeys_Descr[]
static EDA_HOTKEY HkIncHighContrast(_HKI("Increment High Contrast"), HK_HIGHCONTRAST_INC, '>')
static EDA_HOTKEY HkRotateItem(_HKI("Rotate Item"), HK_ROTATE_ITEM, 'R')
static EDA_HOTKEY HkAddBlindBuriedVia(_HKI("Add Blind/Buried Via"), HK_ADD_BLIND_BURIED_VIA, 'V'+GR_KB_ALT+GR_KB_SHIFT)
static EDA_HOTKEY HkSwitchGridToNext(_HKI("Switch Grid To Next"), HK_SWITCH_GRID_TO_NEXT, 'N')
static wxString moduleEditSectionTitle(_HKI("Footprint Editor"))
wxPoint m_O_Curseur
Relative Screen cursor coordinate (on grid) in user units.
Definition: base_screen.h:185
#define GR_KB_ALT
Definition: common.h:65
static EDA_HOTKEY HkZoomOut(_HKI("Zoom Out"), HK_ZOOM_OUT, WXK_F2)
static EDA_HOTKEY HkPrint(_HKI("Print"), HK_PRINT, GR_KB_CTRL+ 'P',(int) wxID_PRINT)
Pcbnew hotkeys.
EDA_DRAW_FRAME::OnSelectGrid ID_TB_OPTIONS_SELECT_UNIT_INCH
Definition: draw_frame.cpp:123
static EDA_HOTKEY HkDecHighContrast(_HKI("Decrement High Contrast"), HK_HIGHCONTRAST_DEC, '<')
EDA_HOTKEY * GetDescriptorFromHotkey(int aKey, EDA_HOTKEY **aList)
Function GetDescriptorFromHotkey Return a EDA_HOTKEY * pointer from a key code for OnHotKey() functio...
static EDA_HOTKEY HkFlipItem(_HKI("Flip Item"), HK_FLIP_ITEM, 'F')
static EDA_HOTKEY HkSelLayerAndAddBlindBuriedVia(_HKI("Select Layer and Add Blind/Buried Via"), HK_SEL_LAYER_AND_ADD_BLIND_BURIED_VIA, '<'+GR_KB_ALT)
static EDA_HOTKEY HkSwitchGridToFastGrid2(_HKI("Switch Grid To Fast Grid2"), HK_SWITCH_GRID_TO_FASTGRID2, GR_KB_ALT+ '2')
static EDA_HOTKEY HkUndo(_HKI("Undo"), HK_UNDO, GR_KB_CTRL+ 'Z',(int) wxID_UNDO)
void DisplayHotkeyList(EDA_BASE_FRAME *aFrame, struct EDA_HOTKEY_CONFIG *aDescList)
Function DisplayHotkeyList Displays the current hotkey list.
static EDA_HOTKEY HkSwitch2InnerLayer3(_HKI("Switch to Inner layer 3"), HK_SWITCH_LAYER_TO_INNER3, WXK_F7)
static EDA_HOTKEY HkSwitchGridToPrevious(_HKI("Switch Grid To Previous"), HK_SWITCH_GRID_TO_PREVIOUS, 'N'+GR_KB_SHIFT)
static EDA_HOTKEY HkRouteTuneSkew(_HKI("Tune Differential Pair Skew (Modern Toolset only)"), HK_ROUTE_TUNE_SKEW, '9')
static wxString commonSectionTitle(_HKI("Common"))
static EDA_HOTKEY HkSwitch2CopperLayer(_HKI("Switch to Copper (B.Cu) layer"), HK_SWITCH_LAYER_TO_COPPER, WXK_PAGEDOWN)
static EDA_HOTKEY Hk3DViewer(_HKI("3D Viewer"), HK_3D_VIEWER, GR_KB_ALT+ '3')
EDA_HOTKEY * common_basic_Hotkey_List[]
static wxString boardEditorSectionTag(wxT("[pcbnew]"))
#define GR_KB_SHIFT
Definition: common.h:66
Definition: common.h:145
static EDA_HOTKEY HkAddModule(_HKI("Add Footprint"), HK_ADD_MODULE, 'O')
static EDA_HOTKEY HkToggleCursor(_HKI("Toggle Cursor Display (Modern Toolset only)"), HK_TOGGLE_CURSOR, 'X'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkSwitch2InnerLayer1(_HKI("Switch to Inner layer 1"), HK_SWITCH_LAYER_TO_INNER1, WXK_F5)
static EDA_HOTKEY HkRedo(_HKI("Redo"), HK_REDO, GR_KB_CTRL+ 'Y',(int) wxID_REDO)
static EDA_HOTKEY HkHighlightNetSelection(_HKI("Toggle Highlight of Selected Net (Modern Toolset only)"), HK_HIGHLIGHT_NET_SELECTION, '`')
static EDA_HOTKEY HkZoneRemoveFilled(_HKI("Remove Filled Areas in All Zones"), HK_ZONE_REMOVE_FILLED, 'B'+GR_KB_CTRL)
static EDA_HOTKEY HkCanvasDefault(_HKI("Switch to Legacy Toolset (not all features will be available"), HK_CANVAS_LEGACY, WXK_F9)
static EDA_HOTKEY HkOpen(_HKI("Open"), HK_OPEN, GR_KB_CTRL+ 'O',(int) wxID_OPEN)
static EDA_HOTKEY HkSwitchTrackWidthToNext(_HKI("Switch Track Width To Next"), HK_SWITCH_TRACK_WIDTH_TO_NEXT, 'W')
static EDA_HOTKEY HkEditWithModedit(_HKI("Edit with Footprint Editor"), HK_EDIT_MODULE_WITH_MODEDIT, 'E'+GR_KB_CTRL)
static EDA_HOTKEY HkMoveItemExact(_HKI("Move Item Exactly"), HK_MOVE_ITEM_EXACT, 'M'+GR_KB_CTRL)
static EDA_HOTKEY HkAddNewTrack(_HKI("Add New Track"), HK_ADD_NEW_TRACK, 'X')
static EDA_HOTKEY HkDuplicateItem(_HKI("Duplicate Item"), HK_DUPLICATE_ITEM, 'D'+GR_KB_CTRL)
static EDA_HOTKEY HkTrackDisplayMode(_HKI("Track Display Mode"), HK_SWITCH_TRACK_DISPLAY_MODE, 'K')
static EDA_HOTKEY HkZoomAuto(_HKI("Zoom Auto"), HK_ZOOM_AUTO, WXK_HOME)
void OnLeftClick(wxDC *DC, const wxPoint &MousePos) override
struct EDA_HOTKEY_CONFIG g_Board_Editor_Hotkeys_Descr[]
static EDA_HOTKEY HkSetGridOrigin(_HKI("Set Grid Origin"), HK_SET_GRID_ORIGIN, 'S')
void OnLeftDClick(wxDC *, const wxPoint &) override
static EDA_HOTKEY HkSwitch2InnerLayer5(_HKI("Switch to Inner layer 5"), HK_SWITCH_LAYER_TO_INNER5, GR_KB_SHIFT+WXK_F5)
static EDA_HOTKEY HkEditBoardItem(_HKI("Edit Item"), HK_EDIT_ITEM, 'E')
EDA_HOTKEY * board_edit_Hotkey_List[]
#define GR_KB_SHIFTCTRL
Definition: common.h:67
static EDA_HOTKEY HkSwitchUnits(_HKI("Switch Units"), HK_SWITCH_UNITS, 'U'+GR_KB_CTRL)
static wxString moduleEditSectionTag(wxT("[footprinteditor]"))
static EDA_HOTKEY HkEditCopy(_HKI("Copy"), HK_EDIT_COPY, GR_KB_CTRL+ 'C',(int) wxID_COPY)
static EDA_HOTKEY HkSave(_HKI("Save"), HK_SAVE, GR_KB_CTRL+ 'S',(int) wxID_SAVE)
static EDA_HOTKEY HkFindItem(_HKI("Find Item"), HK_FIND_ITEM, 'F'+GR_KB_CTRL)
static EDA_HOTKEY HkAddThroughVia(_HKI("Add Through Via"), HK_ADD_THROUGH_VIA, 'V')
EDA_HOTKEY * GetHotKeyDescription(int aCommand) const override
>
EDA_UNITS_T g_UserUnit
Global variables definitions.
Definition: common.cpp:57
static EDA_HOTKEY HkRoutingOptions(_HKI("Routing Options"), HK_ROUTING_OPTIONS, 'E')
static EDA_HOTKEY HkSelectCopper(_HKI("Select Copper Connection"), HK_SEL_COPPER_CONNECTION, 'I')
class EDA_HOTKEY is a class to handle hot key commands.
Definition: hotkeys_basic.h:57
static EDA_HOTKEY HkBackspace(_HKI("Delete Track Segment"), HK_BACK_SPACE, WXK_BACK)
static EDA_HOTKEY HkMouseLeftDClick(_HKI("Mouse Left Double Click"), HK_LEFT_DCLICK, WXK_END, 0)
static EDA_HOTKEY HkViaSizeInc(_HKI("Increase Via Size"), HK_VIA_SIZE_INC, '\'')
static EDA_HOTKEY HkSwitchGridToFastGrid1(_HKI("Switch Grid To Fast Grid1"), HK_SWITCH_GRID_TO_FASTGRID1, GR_KB_ALT+ '1')
static EDA_HOTKEY HkSelLayerAndAddThroughVia(_HKI("Select Layer and Add Through Via"), HK_SEL_LAYER_AND_ADD_THROUGH_VIA, '<')
static EDA_HOTKEY HkZoomRedraw(_HKI("Zoom Redraw"), HK_ZOOM_REDRAW, WXK_F3)
static EDA_HOTKEY HkSwitchTrackWidthToPrevious(_HKI("Switch Track Width To Previous"), HK_SWITCH_TRACK_WIDTH_TO_PREVIOUS, 'W'+GR_KB_CTRL)
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:162
EDA_HOTKEY * module_edit_Hotkey_List[]
PCB_SCREEN * GetScreen() const override
Function GetScreen returns a pointer to a BASE_SCREEN or one of its derivatives.
static EDA_HOTKEY HkSwitch2InnerLayer6(_HKI("Switch to Inner layer 6"), HK_SWITCH_LAYER_TO_INNER6, GR_KB_SHIFT+WXK_F6)
static EDA_HOTKEY HkDragFootprint(_HKI("Drag Item"), HK_DRAG_ITEM, 'G')
static EDA_HOTKEY HkSwitch2InnerLayer2(_HKI("Switch to Inner layer 2"), HK_SWITCH_LAYER_TO_INNER2, WXK_F6)
static EDA_HOTKEY HkResetGridOrigin(_HKI("Reset Grid Origin"), HK_RESET_GRID_ORIGIN, 'Z')
static EDA_HOTKEY HkRouteDiffPair(_HKI("Route Differential Pair (Modern Toolset only)"), HK_ROUTE_DIFF_PAIR, '6')
static EDA_HOTKEY HkZoomSelection(_HKI("Zoom to Selection"), HK_ZOOM_SELECTION, GR_KB_CTRL+WXK_F5, ID_ZOOM_SELECTION)
wxString g_CommonSectionTag
static EDA_HOTKEY HkRotateItemClockwise(_HKI("Rotate Item Clockwise (Modern Toolset only)"), HK_ROTATE_ITEM_CLOCKWISE, GR_KB_SHIFT+ 'R')
static EDA_HOTKEY HkSwitchTrackPosture(_HKI("Switch Track Posture"), HK_SWITCH_TRACK_POSTURE, '/')
static EDA_HOTKEY HkMoveItem(_HKI("Move Item"), HK_MOVE_ITEM, 'M')
EDA_HOTKEY * module_viewer_Hotkey_List[]
#define GR_KB_CTRL
Definition: common.h:64
static EDA_HOTKEY HkResetLocalCoord(_HKI("Reset Local Coordinates"), HK_RESET_LOCAL_COORD, ' ')
#define _HKI(x)
EDA_HOTKEY * common_Hotkey_List[]
wxPoint GetCrossHairPosition(bool aInvertY=false) const
Function GetCrossHairPosition return the current cross hair position in logical (drawing) coordinates...
static EDA_HOTKEY HkLock_Unlock_Footprint(_HKI("Lock/Unlock Footprint"), HK_LOCK_UNLOCK_FOOTPRINT, 'L')
static EDA_HOTKEY HkIncLayerAlpha(_HKI("Increment Layer Transparency (Modern Toolset only)"), HK_INC_LAYER_ALPHA, '}')
static EDA_HOTKEY HkSwitch2NextCopperLayer(_HKI("Switch to Next Layer"), HK_SWITCH_LAYER_TO_NEXT, '+')
static EDA_HOTKEY HkEditPaste(_HKI("Paste"), HK_EDIT_PASTE, GR_KB_CTRL+ 'V',(int) wxID_PASTE)
EDA_HOTKEY * GetDescriptorFromCommand(int aCommand, EDA_HOTKEY **aList)
Function GetDescriptorFromCommand Returns a EDA_HOTKEY* pointer from a hot key identifier.
static EDA_HOTKEY HkZoneFillOrRefill(_HKI("Fill or Refill All Zones"), HK_ZONE_FILL_OR_REFILL, 'B')
static EDA_HOTKEY HkPlaceItem(_HKI("Place Item"), HK_PLACE_ITEM, 'P')
static EDA_HOTKEY HkPositionItemRelative(_HKI("Position Item Relative"), HK_POSITION_RELATIVE, 'R'+GR_KB_CTRL)
static EDA_HOTKEY HkRouteTuneDiffPair(_HKI("Tune Differential Pair Length (Modern Toolset only)"), HK_ROUTE_TUNE_DIFF_PAIR, '8')
static EDA_HOTKEY HkCreateArray(_HKI("Create Array"), HK_CREATE_ARRAY, 'T'+GR_KB_CTRL)
static EDA_HOTKEY HkHelp(_HKI("Help (this window)"), HK_HELP, GR_KB_CTRL+WXK_F1)