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 static EDA_HOTKEY HkRouteTuneSettings( _HKI( "Length Tuning Settings (Modern Toolset only)" ),
110 
111 static EDA_HOTKEY HkRouteTuneIncreaseSpacing( _HKI( "Increase meander spacing by one step." ),
113 static EDA_HOTKEY HkRouteTuneDecreaseSpacing( _HKI( "Decrease meander spacing by one step." ),
115 static EDA_HOTKEY HkRouteTuneIncreaseAmp( _HKI( "Increase meander amplitude by one step." ),
117 static EDA_HOTKEY HkRouteTuneDecreaseAmp( _HKI( "Decrease meander amplitude by one step." ),
119 
120 static EDA_HOTKEY HkAddThroughVia( _HKI( "Add Through Via" ), HK_ADD_THROUGH_VIA, 'V' );
121 static EDA_HOTKEY HkSelLayerAndAddThroughVia( _HKI( "Select Layer and Add Through Via" ),
123 static EDA_HOTKEY HkAddMicroVia( _HKI( "Add MicroVia" ), HK_ADD_MICROVIA, 'V' + GR_KB_CTRL );
124 static EDA_HOTKEY HkAddBlindBuriedVia( _HKI( "Add Blind/Buried Via" ), HK_ADD_BLIND_BURIED_VIA, 'V' + GR_KB_ALT + GR_KB_SHIFT );
125 static EDA_HOTKEY HkSelLayerAndAddBlindBuriedVia( _HKI( "Select Layer and Add Blind/Buried Via" ),
127 static EDA_HOTKEY HkSwitchTrackPosture( _HKI( "Switch Track Posture" ), HK_SWITCH_TRACK_POSTURE, '/' );
128 static EDA_HOTKEY HkDragTrackKeepSlope( _HKI( "Drag Track Keep Slope" ), HK_DRAG_TRACK_KEEP_SLOPE, 'D' );
129 static EDA_HOTKEY HkPlaceItem( _HKI( "Place Item" ), HK_PLACE_ITEM, 'P' );
130 static EDA_HOTKEY HkEditBoardItem( _HKI( "Edit Item" ), HK_EDIT_ITEM, 'E' );
131 static EDA_HOTKEY HkEditWithModedit( _HKI( "Edit with Footprint Editor" ), HK_EDIT_MODULE_WITH_MODEDIT, 'E' + GR_KB_CTRL );
132 static EDA_HOTKEY HkFlipItem( _HKI( "Flip Item" ), HK_FLIP_ITEM, 'F' );
133 static EDA_HOTKEY HkRotateItem( _HKI( "Rotate Item" ), HK_ROTATE_ITEM, 'R' );
134 static EDA_HOTKEY HkRotateItemClockwise( _HKI( "Rotate Item Clockwise (Modern Toolset only)" ),
136 static EDA_HOTKEY HkMoveItem( _HKI( "Move Item" ), HK_MOVE_ITEM, 'M' );
137 static EDA_HOTKEY HkMoveItemExact( _HKI( "Move Item Exactly" ), HK_MOVE_ITEM_EXACT, 'M' + GR_KB_CTRL );
138 static EDA_HOTKEY HkPositionItemRelative( _HKI( "Position Item Relative" ), HK_POSITION_RELATIVE, 'R' + GR_KB_CTRL );
139 static EDA_HOTKEY HkDuplicateItem( _HKI( "Duplicate Item" ), HK_DUPLICATE_ITEM, 'D' + GR_KB_CTRL );
140 static EDA_HOTKEY HkDuplicateItemAndIncrement( _HKI( "Duplicate Item and Increment" ),
142 static EDA_HOTKEY HkCreateArray( _HKI( "Create Array" ), HK_CREATE_ARRAY, 'T' + GR_KB_CTRL );
143 static EDA_HOTKEY HkCopyItem( _HKI( "Copy Item" ), HK_COPY_ITEM, 'C' );
144 static EDA_HOTKEY HkDragFootprint( _HKI( "Drag Item" ), HK_DRAG_ITEM, 'G' );
145 static EDA_HOTKEY HkGetAndMoveFootprint( _HKI( "Get and Move Footprint" ), HK_GET_AND_MOVE_FOOTPRINT, 'T' );
146 static EDA_HOTKEY HkLock_Unlock_Footprint( _HKI( "Lock/Unlock Footprint" ), HK_LOCK_UNLOCK_FOOTPRINT, 'L' );
147 static EDA_HOTKEY HkDelete( _HKI( "Delete Track or Footprint" ), HK_DELETE, WXK_DELETE );
148 static EDA_HOTKEY HkResetLocalCoord( _HKI( "Reset Local Coordinates" ), HK_RESET_LOCAL_COORD, ' ' );
149 static EDA_HOTKEY HkSwitchHighContrastMode( _HKI( "Toggle High Contrast Mode" ), HK_SWITCH_HIGHCONTRAST_MODE,'H');
150 
151 static EDA_HOTKEY HkAddLine( _HKI( "Draw Line" ), HK_ADD_LINE, 'L' + GR_KB_SHIFTCTRL );
152 static EDA_HOTKEY HkAddPolygon( _HKI( "Draw Graphic Polygon" ), HK_ADD_POLYGON, 'P' + GR_KB_SHIFTCTRL );
153 static EDA_HOTKEY HkAddCircle( _HKI( "Draw Circle" ), HK_ADD_CIRCLE, 'C' + GR_KB_SHIFTCTRL );
154 static EDA_HOTKEY HkAddArc( _HKI( "Draw Arc" ), HK_ADD_ARC, 'A' + GR_KB_SHIFTCTRL );
155 static EDA_HOTKEY HkAddText( _HKI( "Add Text" ), HK_ADD_TEXT, 'T' + GR_KB_SHIFTCTRL );
156 static EDA_HOTKEY HkAddDimension( _HKI( "Add Dimension" ), HK_ADD_DIMENSION, 'H' + GR_KB_SHIFTCTRL );
157 static EDA_HOTKEY HkAddFilledZone( _HKI( "Add Filled Zone" ), HK_ADD_ZONE, 'Z' + GR_KB_SHIFTCTRL );
158 static EDA_HOTKEY HkAddFreeVia( _HKI( "Add Vias" ), HK_ADD_FREE_VIA, 'V' + GR_KB_SHIFTCTRL );
159 static EDA_HOTKEY HkAddKeepout( _HKI( "Add Keepout Area" ), HK_ADD_KEEPOUT, 'K' + GR_KB_SHIFTCTRL );
160 static EDA_HOTKEY HkAddZoneCutout( _HKI( "Add a Zone Cutout" ), HK_ADD_CUTOUT, 'C' );
161 static EDA_HOTKEY HkAddSimilarZone( _HKI( "Add a Similar Zone" ), HK_ADD_SIMILAR_ZONE, '.' + GR_KB_SHIFTCTRL );
162 static EDA_HOTKEY HkAddDXF( _HKI( "Place DXF" ), HK_ADD_DXF, 'F' + GR_KB_SHIFTCTRL );
163 static EDA_HOTKEY HkAddAnchor( _HKI( "Place the Footprint Anchor" ), HK_ADD_ANCHOR, 'N' + GR_KB_SHIFTCTRL );
164 
165 static EDA_HOTKEY HkIncreaseLineWidth( _HKI( "Increase Line Width" ), HK_INC_LINE_WIDTH, '+' + GR_KB_CTRL );
166 static EDA_HOTKEY HkDecreaseLineWidth( _HKI( "Decrease Line Width" ), HK_DEC_LINE_WIDTH, '-' + GR_KB_CTRL );
167 
168 
169 static EDA_HOTKEY HkSetGridOrigin( _HKI( "Set Grid Origin" ), HK_SET_GRID_ORIGIN, 'S' );
170 static EDA_HOTKEY HkResetGridOrigin( _HKI( "Reset Grid Origin" ), HK_RESET_GRID_ORIGIN, 'Z' );
171 
172 static EDA_HOTKEY HkCanvasDefault( _HKI( "Switch to Legacy Toolset (not all features will be available" ),
174 #ifdef __WXMAC__
175  GR_KB_ALT +
176 #endif
177  WXK_F9 );
178 static EDA_HOTKEY HkCanvasOpenGL( _HKI( "Switch to Modern Toolset with hardware-accelerated graphics (recommended)" ),
180 #ifdef __WXMAC__
181  GR_KB_ALT +
182 #endif
183  WXK_F11 );
184 static EDA_HOTKEY HkCanvasCairo( _HKI( "Switch to Modern Toolset with software graphics (fall-back)" ),
186 #ifdef __WXMAC__
187  GR_KB_ALT +
188 #endif
189  WXK_F12 );
190 
191 static EDA_HOTKEY HkZoneFillOrRefill( _HKI( "Fill or Refill All Zones" ),
192  HK_ZONE_FILL_OR_REFILL, 'B' );
193 static EDA_HOTKEY HkZoneRemoveFilled( _HKI( "Remove Filled Areas in All Zones" ),
195 /* Fit on Screen */
196 #if !defined( __WXMAC__ )
197 static EDA_HOTKEY HkZoomAuto( _HKI( "Zoom Auto" ), HK_ZOOM_AUTO, WXK_HOME );
198 #else
199 static EDA_HOTKEY HkZoomAuto( _HKI( "Zoom Auto" ), HK_ZOOM_AUTO, GR_KB_CTRL + '0' );
200 #endif
201 
202 static EDA_HOTKEY HkZoomCenter( _HKI( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 );
203 
204 /* Refresh Screen */
205 #if !defined( __WXMAC__ )
206 static EDA_HOTKEY HkZoomRedraw( _HKI( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 );
207 #else
208 static EDA_HOTKEY HkZoomRedraw( _HKI( "Zoom Redraw" ), HK_ZOOM_REDRAW, GR_KB_CTRL + 'R' );
209 #endif
210 
211 /* Zoom In */
212 #if !defined( __WXMAC__ )
213 static EDA_HOTKEY HkZoomIn( _HKI( "Zoom In" ), HK_ZOOM_IN, WXK_F1 );
214 #else
215 static EDA_HOTKEY HkZoomIn( _HKI( "Zoom In" ), HK_ZOOM_IN, GR_KB_CTRL + '+' );
216 #endif
217 
218 /* Zoom Out */
219 #if !defined( __WXMAC__ )
220 static EDA_HOTKEY HkZoomOut( _HKI( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 );
221 #else
222 static EDA_HOTKEY HkZoomOut( _HKI( "Zoom Out" ), HK_ZOOM_OUT, GR_KB_CTRL + '-' );
223 #endif
224 
225 static EDA_HOTKEY HkZoomSelection( _HKI( "Zoom to Selection" ), HK_ZOOM_SELECTION,
226  GR_KB_CTRL + WXK_F5, ID_ZOOM_SELECTION );
227 
228 static EDA_HOTKEY Hk3DViewer( _HKI( "3D Viewer" ), HK_3D_VIEWER, GR_KB_ALT + '3' );
229 
230 static EDA_HOTKEY HkHelp( _HKI( "Help (this window)" ), HK_HELP, GR_KB_CTRL + WXK_F1 );
231 
232 static EDA_HOTKEY HkSwitchTrackWidthToNext( _HKI( "Switch Track Width To Next" ),
234 
235 static EDA_HOTKEY HkSwitchTrackWidthToPrevious( _HKI( "Switch Track Width To Previous" ),
237  + GR_KB_CTRL );
238 
239 static EDA_HOTKEY HkSwitchGridToFastGrid1( _HKI( "Switch Grid To Fast Grid1" ),
241 
242 static EDA_HOTKEY HkSwitchGridToFastGrid2( _HKI( "Switch Grid To Fast Grid2" ),
244 
245 static EDA_HOTKEY HkSwitchGridToNext( _HKI( "Switch Grid To Next" ),
246  HK_SWITCH_GRID_TO_NEXT, 'N' );
247 
248 static EDA_HOTKEY HkSwitchGridToPrevious( _HKI( "Switch Grid To Previous" ),
250 
251 static EDA_HOTKEY HkSwitchUnits( _HKI( "Switch Units" ), HK_SWITCH_UNITS, 'U' + GR_KB_CTRL );
252 
253 static EDA_HOTKEY HkTrackDisplayMode( _HKI( "Track Display Mode" ),
255 
256 static EDA_HOTKEY HkAddModule( _HKI( "Add Footprint" ), HK_ADD_MODULE, 'O' );
257 
258 // These hotkeys work only in GAL canvas, because the legacy canvas using wxDC does not know
259 // the transparency (alpha channel)
260 static EDA_HOTKEY HkIncLayerAlpha( _HKI( "Increment Layer Transparency (Modern Toolset only)" ),
261  HK_INC_LAYER_ALPHA, '}' );
262 
263 static EDA_HOTKEY HkDecLayerAlpha( _HKI( "Decrement Layer Transparency (Modern Toolset only)" ),
264  HK_DEC_LAYER_ALPHA, '{' );
265 
266 // These two are currently unused, and are intentionally not added to a list below.
267 static EDA_HOTKEY HkIncHighContrast( _HKI( "Increment High Contrast" ), HK_HIGHCONTRAST_INC, '>' );
268 static EDA_HOTKEY HkDecHighContrast( _HKI( "Decrement High Contrast" ), HK_HIGHCONTRAST_DEC, '<' );
269 
270 static EDA_HOTKEY HkSelectConnection( _HKI( "Select Trivial Connection" ), HK_SEL_TRIVIAL_CONNECTION, 'U' );
271 
272 static EDA_HOTKEY HkSelectCopper( _HKI( "Select Copper Connection" ), HK_SEL_COPPER_CONNECTION, 'I' );
273 
274 static EDA_HOTKEY HkRoutingOptions( _HKI( "Routing Options" ), HK_ROUTING_OPTIONS, ',' + GR_KB_CTRL );
275 
276 static EDA_HOTKEY HkCustomTrackWidth( _HKI( "Custom Track/Via Size" ), HK_CUSTOM_TRACK_WIDTH, 'Q' );
277 
278 static EDA_HOTKEY HkDpDimension( _HKI( "Differential Pair Dimensions" ), HK_DP_DIMENSIONS, 'R' + GR_KB_SHIFTCTRL );
279 
280 static EDA_HOTKEY HkViaSizeInc( _HKI( "Increase Via Size" ), HK_VIA_SIZE_INC, '\'' );
281 
282 static EDA_HOTKEY HkViaSizeDec( _HKI( "Decrease Via Size" ), HK_VIA_SIZE_DEC, '\\' );
283 
284 static EDA_HOTKEY HkHighlightNetSelection( _HKI( "Toggle Highlight of Selected Net (Modern Toolset only)" ),
286 
287 // Common: hotkeys_basic.h
288 static EDA_HOTKEY HkNew( _HKI( "New" ), HK_NEW, GR_KB_CTRL + 'N', (int) wxID_NEW );
289 static EDA_HOTKEY HkOpen( _HKI( "Open" ), HK_OPEN, GR_KB_CTRL + 'O', (int) wxID_OPEN );
290 static EDA_HOTKEY HkSave( _HKI( "Save" ), HK_SAVE, GR_KB_CTRL + 'S', (int) wxID_SAVE );
291 static EDA_HOTKEY HkSaveAs( _HKI( "Save As" ), HK_SAVEAS, GR_KB_SHIFT + GR_KB_CTRL + 'S', (int) wxID_SAVEAS );
292 static EDA_HOTKEY HkPrint( _HKI( "Print" ), HK_PRINT, GR_KB_CTRL + 'P', (int) wxID_PRINT );
293 
294 static EDA_HOTKEY HkUndo( _HKI( "Undo" ), HK_UNDO, GR_KB_CTRL + 'Z', (int) wxID_UNDO );
295 
296 #if !defined( __WXMAC__ )
297 static EDA_HOTKEY HkRedo( _HKI( "Redo" ), HK_REDO, GR_KB_CTRL + 'Y', (int) wxID_REDO );
298 #else
299 static EDA_HOTKEY HkRedo( _HKI( "Redo" ), HK_REDO,
300  GR_KB_SHIFT + GR_KB_CTRL + 'Z',
301  (int) wxID_REDO );
302 #endif
303 
304 static EDA_HOTKEY HkEditCut( _HKI( "Cut" ), HK_EDIT_CUT, GR_KB_CTRL + 'X', (int) wxID_CUT );
305 static EDA_HOTKEY HkEditCopy( _HKI( "Copy" ), HK_EDIT_COPY, GR_KB_CTRL + 'C', (int) wxID_COPY );
306 static EDA_HOTKEY HkEditPaste( _HKI( "Paste" ), HK_EDIT_PASTE, GR_KB_CTRL + 'V', (int) wxID_PASTE );
307 
308 static EDA_HOTKEY HkToggleCursor( _HKI( "Toggle Cursor Display (Modern Toolset only)" ),
310 static EDA_HOTKEY HkMeasureTool( _HKI( "Measure Distance (Modern Toolset only)" ),
312 
313 // List of common hotkey descriptors
315 {
317  &HkUndo, &HkRedo,
326  &HkMeasureTool,
327  NULL
328 };
329 
330 // common hotkey descriptors only useful in footprint viewer
332 {
338  NULL
339 };
340 
341 // List of hotkey descriptors for Pcbnew
343 {
344  // Adding Items
345  &HkPlaceItem,
346  &HkAddModule,
347  &HkAddFreeVia,
349  &HkAddKeepout,
352  &HkAddLine,
353  &HkAddCircle,
354  &HkAddArc,
355  &HkAddPolygon,
356  &HkAddText,
358  &HkAddDXF,
359 
360  // Routing and options during routing
361  &HkAddNewTrack,
366  &HkAddMicroVia,
367 
368  // Routing
373 
374  // Routing Options
381  &HkDpDimension,
382 
383  // Zones
386 
387  // Highlight and display
392 
393  // Adjust track/via sizes
397  &HkViaSizeInc,
398  &HkViaSizeDec,
399 
400  // Remove items
401  &HkDelete,
402  &HkBackspace,
403 
404  // Edit placement
406  &HkCopyItem,
407  &HkMoveItem,
411  &HkFlipItem,
412  &HkRotateItem,
414 
417 
420  &HkCreateArray,
422 
423  &HkFindItem,
426 
427  // Active Layer
438 
439  // Grids
444 
445  // Display
448  &HkCanvasCairo,
450  NULL
451 };
452 
453 // List of hotkey descriptors for the module editor
455  // Add Items
456  &HkAddLine,
457  &HkAddCircle,
458  &HkAddArc,
459  &HkAddPolygon,
460  &HkAddText,
461  &HkAddAnchor,
462 
463  // Delete/Move
464  &HkDelete,
465  &HkMoveItem,
467  &HkRotateItem,
469 
470  // Edit/Duplicate
474  &HkCreateArray,
475 
476  // Display
479  &HkCanvasCairo,
481  NULL
482  };
483 
484 // List of hotkey descriptors for the module viewer
485 // Currently empty
487  NULL
488  };
489 
490 // Keyword Identifiers (tags) in key code configuration file (section names)
491 // (.m_SectionTag member of a EDA_HOTKEY_CONFIG)
492 static wxString boardEditorSectionTag( wxT( "[pcbnew]" ) );
493 static wxString moduleEditSectionTag( wxT( "[footprinteditor]" ) );
494 
495 // Titles for hotkey editor and hotkey display
496 static wxString commonSectionTitle( _HKI( "Common" ) );
497 static wxString boardEditorSectionTitle( _HKI( "Board Editor" ) );
498 static wxString moduleEditSectionTitle( _HKI( "Footprint Editor" ) );
499 
500 // list of sections and corresponding hotkey list for Pcbnew
501 // (used to create an hotkey config file, and edit hotkeys )
503  { &g_CommonSectionTag, common_Hotkey_List, &commonSectionTitle },
504  { &boardEditorSectionTag, board_edit_Hotkey_List, &boardEditorSectionTitle },
505  { &moduleEditSectionTag, module_edit_Hotkey_List, &moduleEditSectionTitle },
506  { NULL, NULL, NULL }
507 };
508 
509 // list of sections and corresponding hotkey list for the board editor
510 // (used to list current hotkeys in the board editor)
512  { &g_CommonSectionTag, common_Hotkey_List, &commonSectionTitle },
513  { &boardEditorSectionTag, board_edit_Hotkey_List, &boardEditorSectionTitle },
514  { NULL, NULL, NULL }
515 };
516 
517 // list of sections and corresponding hotkey list for the footprint editor
518 // (used to list current hotkeys in the module editor)
520  { &g_CommonSectionTag, common_Hotkey_List, &commonSectionTitle },
521  { &moduleEditSectionTag, module_edit_Hotkey_List, &moduleEditSectionTitle },
522  { NULL, NULL, NULL }
523 };
524 
525 // list of sections and corresponding hotkey list for the footprint viewer
526 // (used to list current hotkeys in the module viewer)
528  { &g_CommonSectionTag, common_basic_Hotkey_List, &commonSectionTitle },
529  { NULL, NULL, NULL }
530 };
531 
532 
534 {
535  EDA_HOTKEY* HK_Descr = GetDescriptorFromCommand( aCommand, common_Hotkey_List );
536 
537  if( HK_Descr == NULL )
538  HK_Descr = GetDescriptorFromCommand( aCommand, module_viewer_Hotkey_List );
539 
540  return HK_Descr;
541 }
542 
543 
544 bool FOOTPRINT_VIEWER_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition,
545  EDA_ITEM* aItem )
546 {
547  if( aHotKey == 0 )
548  return false;
549 
550  wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
551  cmd.SetEventObject( this );
552 
553  /* Convert lower to upper case (the usual toupper function has problem with non ascii
554  * codes like function keys */
555  if( (aHotKey >= 'a') && (aHotKey <= 'z') )
556  aHotKey += 'A' - 'a';
557 
558  EDA_HOTKEY* HK_Descr = GetDescriptorFromHotkey( aHotKey, common_Hotkey_List );
559 
560  if( HK_Descr == NULL )
561  HK_Descr = GetDescriptorFromHotkey( aHotKey, module_viewer_Hotkey_List );
562 
563  if( HK_Descr == NULL )
564  return false;
565 
566  switch( HK_Descr->m_Idcommand )
567  {
568  default:
569  case HK_NOT_FOUND:
570  return false;
571 
572  case HK_HELP: // Display Current hotkey list
573  DisplayHotkeyList( this, g_Module_Viewer_Hotkeys_Descr );
574  break;
575 
576  case HK_RESET_LOCAL_COORD: // set local (relative) coordinate origin
578  break;
579 
580  case HK_LEFT_CLICK:
581  OnLeftClick( aDC, aPosition );
582  break;
583 
584  case HK_LEFT_DCLICK: // Simulate a double left click: generate 2 events
585  OnLeftClick( aDC, aPosition );
586  OnLeftDClick( aDC, aPosition );
587  break;
588 
589  case HK_SWITCH_UNITS:
590  cmd.SetId( (g_UserUnit == INCHES) ?
592  GetEventHandler()->ProcessEvent( cmd );
593  break;
594 
595  case HK_ZOOM_IN:
596  cmd.SetId( ID_KEY_ZOOM_IN );
597  GetEventHandler()->ProcessEvent( cmd );
598  break;
599 
600  case HK_ZOOM_OUT:
601  cmd.SetId( ID_KEY_ZOOM_OUT );
602  GetEventHandler()->ProcessEvent( cmd );
603  break;
604 
605  case HK_ZOOM_REDRAW:
606  cmd.SetId( ID_ZOOM_REDRAW );
607  GetEventHandler()->ProcessEvent( cmd );
608  break;
609 
610  case HK_ZOOM_CENTER:
611  cmd.SetId( ID_POPUP_ZOOM_CENTER );
612  GetEventHandler()->ProcessEvent( cmd );
613  break;
614 
615  case HK_ZOOM_AUTO:
616  cmd.SetId( ID_ZOOM_PAGE );
617  GetEventHandler()->ProcessEvent( cmd );
618  break;
619  }
620 
621  return true;
622 }
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')
static EDA_HOTKEY HkDecreaseLineWidth(_HKI("Decrease Line Width"), HK_DEC_LINE_WIDTH, '-'+GR_KB_CTRL)
Structure EDA_HOTKEY_CONFIG contains the information required to save hot key information to a config...
Definition: hotkeys_basic.h:89
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)
static EDA_HOTKEY HkAddLine(_HKI("Draw Line"), HK_ADD_LINE, 'L'+GR_KB_SHIFTCTRL)
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 HkAddFreeVia(_HKI("Add Vias"), HK_ADD_FREE_VIA, 'V'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkGetAndMoveFootprint(_HKI("Get and Move Footprint"), HK_GET_AND_MOVE_FOOTPRINT, 'T')
static EDA_HOTKEY HkAddSimilarZone(_HKI("Add a Similar Zone"), HK_ADD_SIMILAR_ZONE, '.'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkSwitch2PreviousCopperLayer(_HKI("Switch to Previous Layer"), HK_SWITCH_LAYER_TO_PREVIOUS, '-')
static EDA_HOTKEY HkAddArc(_HKI("Draw Arc"), HK_ADD_ARC, 'A'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkAddPolygon(_HKI("Draw Graphic Polygon"), HK_ADD_POLYGON, 'P'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkDuplicateItemAndIncrement(_HKI("Duplicate Item and Increment"), HK_DUPLICATE_ITEM_AND_INCREMENT, 'D'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkIncreaseLineWidth(_HKI("Increase Line Width"), HK_INC_LINE_WIDTH, '+'+GR_KB_CTRL)
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)
static EDA_HOTKEY HkAddFilledZone(_HKI("Add Filled Zone"), HK_ADD_ZONE, 'Z'+GR_KB_SHIFTCTRL)
void DisplayHotkeyList(EDA_BASE_FRAME *aFrame, struct EDA_HOTKEY_CONFIG *aDescList)
Function DisplayHotkeyList Displays the current hotkey list.
static EDA_HOTKEY HkRouteTuneDecreaseSpacing(_HKI("Decrease meander spacing by one step."), HK_ROUTE_TUNE_DECREASE_SPACING, '2')
static EDA_HOTKEY HkSwitch2InnerLayer3(_HKI("Switch to Inner layer 3"), HK_SWITCH_LAYER_TO_INNER3, WXK_F7)
static EDA_HOTKEY HkAddKeepout(_HKI("Add Keepout Area"), HK_ADD_KEEPOUT, 'K'+GR_KB_SHIFTCTRL)
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 HkAddZoneCutout(_HKI("Add a Zone Cutout"), HK_ADD_CUTOUT, 'C')
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:146
static EDA_HOTKEY HkAddModule(_HKI("Add Footprint"), HK_ADD_MODULE, 'O')
static EDA_HOTKEY HkAddAnchor(_HKI("Place the Footprint Anchor"), HK_ADD_ANCHOR, 'N'+GR_KB_SHIFTCTRL)
static EDA_HOTKEY HkAddDimension(_HKI("Add Dimension"), HK_ADD_DIMENSION, 'H'+GR_KB_SHIFTCTRL)
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 HkRouteTuneIncreaseAmp(_HKI("Increase meander amplitude by one step."), HK_ROUTE_TUNE_INCREASE_AMP, '3')
static EDA_HOTKEY HkDuplicateItem(_HKI("Duplicate Item"), HK_DUPLICATE_ITEM, 'D'+GR_KB_CTRL)
static EDA_HOTKEY HkRouteTuneSettings(_HKI("Length Tuning Settings (Modern Toolset only)"), HK_ROUTE_TUNE_SETTINGS, 'L'+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')
static EDA_HOTKEY HkAddCircle(_HKI("Draw Circle"), HK_ADD_CIRCLE, 'C'+GR_KB_SHIFTCTRL)
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 HkSelectCopper(_HKI("Select Copper Connection"), HK_SEL_COPPER_CONNECTION, 'I')
static EDA_HOTKEY HkAddDXF(_HKI("Place DXF"), HK_ADD_DXF, 'F'+GR_KB_SHIFTCTRL)
class EDA_HOTKEY is a class to handle hot key commands.
Definition: hotkeys_basic.h:59
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 HkRouteTuneDecreaseAmp(_HKI("Decrease meander amplitude by one step."), HK_ROUTE_TUNE_DECREASE_AMP, '4')
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 HkDpDimension(_HKI("Differential Pair Dimensions"), HK_DP_DIMENSIONS, 'R'+GR_KB_SHIFTCTRL)
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)
static EDA_HOTKEY HkAddText(_HKI("Add Text"), HK_ADD_TEXT, 'T'+GR_KB_SHIFTCTRL)
EDA_HOTKEY * GetDescriptorFromCommand(int aCommand, EDA_HOTKEY **aList)
Function GetDescriptorFromCommand Returns a EDA_HOTKEY* pointer from a hot key identifier.
static EDA_HOTKEY HkRouteTuneIncreaseSpacing(_HKI("Increase meander spacing by one step."), HK_ROUTE_TUNE_INCREASE_SPACING, '1')
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 HkRoutingOptions(_HKI("Routing Options"), HK_ROUTING_OPTIONS, ','+GR_KB_CTRL)
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)