📄 emc.cc
字号:
/********************************************************************* Description: emc.cc** An auto-generated file to handle the update functions and* routing of messages to the correct buffer/processes.** NOTICE: this file has been manually edited for EMC2, the* Java CodeGen utility should _NOT_ be used for EMC2, it will* overwrite this file!!** Author:* License: GPL Version 2* System: Linux** Copyright (c) 2004 All rights reserved.** Last change:* $Revision: 1.18 $* $Author: cradek $* $Date: 2006/03/21 02:42:28 $********************************************************************/// Include all NML, CMS, and RCS classes and functions#include "rcs.hh"// Include command and status message definitions#include "canon.hh"#include "emc.hh"#include "emcglb.h"#include "emcpos.h"// Forward Function Prototypesvoid EmcPose_update(CMS * cms, EmcPose * x);void CANON_TOOL_TABLE_update(CMS * cms, CANON_TOOL_TABLE * x);void PmCartesian_update(CMS * cms, PmCartesian * x);void initialize_PmCartesian(PmCartesian * x);void CANON_VECTOR_update(CMS * cms, CANON_VECTOR * x);void initialize_CANON_TOOL_TABLE(CANON_TOOL_TABLE * x);void initialize_EmcPose(EmcPose * x);void CANON_POSITION_update(CMS * cms, CANON_POSITION * x);void initialize_CANON_POSITION(CANON_POSITION * x);/** NML/CMS Format function : emcFormat* Automatically generated by NML CodeGen Java Applet.* on Sat Oct 11 13:45:16 UTC 2003*/int emcFormat(NMLTYPE type, void *buffer, CMS * cms){ switch (type) { case EMC_ABORT_TYPE: ((EMC_ABORT *) buffer)->update(cms); break; case EMC_AUX_ABORT_TYPE: ((EMC_AUX_ABORT *) buffer)->update(cms); break; case EMC_AUX_AIO_WRITE_TYPE: ((EMC_AUX_AIO_WRITE *) buffer)->update(cms); break; case EMC_AUX_DIO_WRITE_TYPE: ((EMC_AUX_DIO_WRITE *) buffer)->update(cms); break; case EMC_AUX_ESTOP_RESET_TYPE: ((EMC_AUX_ESTOP_RESET *) buffer)->update(cms); break; case EMC_AUX_ESTOP_OFF_TYPE: ((EMC_AUX_ESTOP_OFF *) buffer)->update(cms); break; case EMC_AUX_ESTOP_ON_TYPE: ((EMC_AUX_ESTOP_ON *) buffer)->update(cms); break; case EMC_AUX_HALT_TYPE: ((EMC_AUX_HALT *) buffer)->update(cms); break; case EMC_AUX_INIT_TYPE: ((EMC_AUX_INIT *) buffer)->update(cms); break; case EMC_AUX_STAT_TYPE: ((EMC_AUX_STAT *) buffer)->update(cms); break; case EMC_AXIS_ABORT_TYPE: ((EMC_AXIS_ABORT *) buffer)->update(cms); break; case EMC_AXIS_ABS_JOG_TYPE: ((EMC_AXIS_ABS_JOG *) buffer)->update(cms); break; case EMC_AXIS_ACTIVATE_TYPE: ((EMC_AXIS_ACTIVATE *) buffer)->update(cms); break; case EMC_AXIS_ALTER_TYPE: ((EMC_AXIS_ALTER *) buffer)->update(cms); break; case EMC_AXIS_DEACTIVATE_TYPE: ((EMC_AXIS_DEACTIVATE *) buffer)->update(cms); break; case EMC_AXIS_DISABLE_TYPE: ((EMC_AXIS_DISABLE *) buffer)->update(cms); break; case EMC_AXIS_ENABLE_TYPE: ((EMC_AXIS_ENABLE *) buffer)->update(cms); break; case EMC_AXIS_HALT_TYPE: ((EMC_AXIS_HALT *) buffer)->update(cms); break; case EMC_AXIS_HOME_TYPE: ((EMC_AXIS_HOME *) buffer)->update(cms); break; case EMC_AXIS_INCR_JOG_TYPE: ((EMC_AXIS_INCR_JOG *) buffer)->update(cms); break; case EMC_AXIS_INIT_TYPE: ((EMC_AXIS_INIT *) buffer)->update(cms); break; case EMC_AXIS_JOG_TYPE: ((EMC_AXIS_JOG *) buffer)->update(cms); break; case EMC_AXIS_LOAD_COMP_TYPE: ((EMC_AXIS_LOAD_COMP *) buffer)->update(cms); break; case EMC_AXIS_OVERRIDE_LIMITS_TYPE: ((EMC_AXIS_OVERRIDE_LIMITS *) buffer)->update(cms); break; case EMC_AXIS_SET_AXIS_TYPE: ((EMC_AXIS_SET_AXIS *) buffer)->update(cms); break; case EMC_AXIS_SET_CYCLE_TIME_TYPE: ((EMC_AXIS_SET_CYCLE_TIME *) buffer)->update(cms); break; case EMC_AXIS_SET_FERROR_TYPE: ((EMC_AXIS_SET_FERROR *) buffer)->update(cms); break; case EMC_AXIS_SET_GAINS_TYPE: ((EMC_AXIS_SET_GAINS *) buffer)->update(cms); break; case EMC_AXIS_SET_BACKLASH_TYPE: ((EMC_AXIS_SET_BACKLASH *) buffer)->update(cms); break; case EMC_AXIS_SET_HOMING_PARAMS_TYPE: ((EMC_AXIS_SET_HOMING_PARAMS *) buffer)->update(cms); break; case EMC_AXIS_SET_INPUT_SCALE_TYPE: ((EMC_AXIS_SET_INPUT_SCALE *) buffer)->update(cms); break; case EMC_AXIS_SET_MAX_OUTPUT_LIMIT_TYPE: ((EMC_AXIS_SET_MAX_OUTPUT_LIMIT *) buffer)->update(cms); break; case EMC_AXIS_SET_MAX_POSITION_LIMIT_TYPE: ((EMC_AXIS_SET_MAX_POSITION_LIMIT *) buffer)->update(cms); break; case EMC_AXIS_SET_MAX_VELOCITY_TYPE: ((EMC_AXIS_SET_MAX_VELOCITY *) buffer)->update(cms); break; case EMC_AXIS_SET_MIN_FERROR_TYPE: ((EMC_AXIS_SET_MIN_FERROR *) buffer)->update(cms); break; case EMC_AXIS_SET_MIN_OUTPUT_LIMIT_TYPE: ((EMC_AXIS_SET_MIN_OUTPUT_LIMIT *) buffer)->update(cms); break; case EMC_AXIS_SET_MIN_POSITION_LIMIT_TYPE: ((EMC_AXIS_SET_MIN_POSITION_LIMIT *) buffer)->update(cms); break; case EMC_AXIS_SET_OUTPUT_TYPE: ((EMC_AXIS_SET_OUTPUT *) buffer)->update(cms); break; case EMC_AXIS_SET_OUTPUT_SCALE_TYPE: ((EMC_AXIS_SET_OUTPUT_SCALE *) buffer)->update(cms); break; case EMC_AXIS_SET_STEP_PARAMS_TYPE: ((EMC_AXIS_SET_STEP_PARAMS *) buffer)->update(cms); break; case EMC_AXIS_SET_UNITS_TYPE: ((EMC_AXIS_SET_UNITS *) buffer)->update(cms); break; case EMC_AXIS_STAT_TYPE: ((EMC_AXIS_STAT *) buffer)->update(cms); break; case EMC_COOLANT_ABORT_TYPE: ((EMC_COOLANT_ABORT *) buffer)->update(cms); break; case EMC_COOLANT_FLOOD_OFF_TYPE: ((EMC_COOLANT_FLOOD_OFF *) buffer)->update(cms); break; case EMC_COOLANT_FLOOD_ON_TYPE: ((EMC_COOLANT_FLOOD_ON *) buffer)->update(cms); break; case EMC_COOLANT_HALT_TYPE: ((EMC_COOLANT_HALT *) buffer)->update(cms); break; case EMC_COOLANT_INIT_TYPE: ((EMC_COOLANT_INIT *) buffer)->update(cms); break; case EMC_COOLANT_MIST_OFF_TYPE: ((EMC_COOLANT_MIST_OFF *) buffer)->update(cms); break; case EMC_COOLANT_MIST_ON_TYPE: ((EMC_COOLANT_MIST_ON *) buffer)->update(cms); break; case EMC_COOLANT_STAT_TYPE: ((EMC_COOLANT_STAT *) buffer)->update(cms); break; case EMC_HALT_TYPE: ((EMC_HALT *) buffer)->update(cms); break; case EMC_INIT_TYPE: ((EMC_INIT *) buffer)->update(cms); break; case EMC_IO_ABORT_TYPE: ((EMC_IO_ABORT *) buffer)->update(cms); break; case EMC_IO_HALT_TYPE: ((EMC_IO_HALT *) buffer)->update(cms); break; case EMC_IO_INIT_TYPE: ((EMC_IO_INIT *) buffer)->update(cms); break; case EMC_IO_SET_CYCLE_TIME_TYPE: ((EMC_IO_SET_CYCLE_TIME *) buffer)->update(cms); break; case EMC_IO_STAT_TYPE: ((EMC_IO_STAT *) buffer)->update(cms); break; case EMC_LUBE_ABORT_TYPE: ((EMC_LUBE_ABORT *) buffer)->update(cms); break; case EMC_LUBE_HALT_TYPE: ((EMC_LUBE_HALT *) buffer)->update(cms); break; case EMC_LUBE_INIT_TYPE: ((EMC_LUBE_INIT *) buffer)->update(cms); break; case EMC_LUBE_OFF_TYPE: ((EMC_LUBE_OFF *) buffer)->update(cms); break; case EMC_LUBE_ON_TYPE: ((EMC_LUBE_ON *) buffer)->update(cms); break; case EMC_LUBE_STAT_TYPE: ((EMC_LUBE_STAT *) buffer)->update(cms); break; case EMC_MOTION_ABORT_TYPE: ((EMC_MOTION_ABORT *) buffer)->update(cms); break; case EMC_MOTION_HALT_TYPE: ((EMC_MOTION_HALT *) buffer)->update(cms); break; case EMC_MOTION_INIT_TYPE: ((EMC_MOTION_INIT *) buffer)->update(cms); break; case EMC_MOTION_SET_AOUT_TYPE: ((EMC_MOTION_SET_AOUT *) buffer)->update(cms); break; case EMC_MOTION_SET_DOUT_TYPE: ((EMC_MOTION_SET_DOUT *) buffer)->update(cms); break; case EMC_MOTION_STAT_TYPE: ((EMC_MOTION_STAT *) buffer)->update(cms); break; case EMC_NULL_TYPE: ((EMC_NULL *) buffer)->update(cms); break; case EMC_OPERATOR_DISPLAY_TYPE: ((EMC_OPERATOR_DISPLAY *) buffer)->update(cms); break; case EMC_OPERATOR_ERROR_TYPE: ((EMC_OPERATOR_ERROR *) buffer)->update(cms); break; case EMC_OPERATOR_TEXT_TYPE: ((EMC_OPERATOR_TEXT *) buffer)->update(cms); break; case EMC_SYSTEM_CMD_TYPE: ((EMC_SYSTEM_CMD *) buffer)->update(cms); break; case EMC_SET_AIO_INDEX_TYPE: ((EMC_SET_AIO_INDEX *) buffer)->update(cms); break; case EMC_SET_DEBUG_TYPE: ((EMC_SET_DEBUG *) buffer)->update(cms); break; case EMC_SET_DIO_INDEX_TYPE: ((EMC_SET_DIO_INDEX *) buffer)->update(cms); break; case EMC_SET_POLARITY_TYPE: ((EMC_SET_POLARITY *) buffer)->update(cms); break; case EMC_SPINDLE_ABORT_TYPE: ((EMC_SPINDLE_ABORT *) buffer)->update(cms); break; case EMC_SPINDLE_BRAKE_ENGAGE_TYPE: ((EMC_SPINDLE_BRAKE_ENGAGE *) buffer)->update(cms); break; case EMC_SPINDLE_BRAKE_RELEASE_TYPE: ((EMC_SPINDLE_BRAKE_RELEASE *) buffer)->update(cms); break; case EMC_SPINDLE_CONSTANT_TYPE: ((EMC_SPINDLE_CONSTANT *) buffer)->update(cms); break; case EMC_SPINDLE_DECREASE_TYPE: ((EMC_SPINDLE_DECREASE *) buffer)->update(cms); break; case EMC_SPINDLE_DISABLE_TYPE: ((EMC_SPINDLE_DISABLE *) buffer)->update(cms); break; case EMC_SPINDLE_ENABLE_TYPE: ((EMC_SPINDLE_ENABLE *) buffer)->update(cms); break; case EMC_SPINDLE_FORWARD_TYPE: ((EMC_SPINDLE_FORWARD *) buffer)->update(cms); break; case EMC_SPINDLE_HALT_TYPE: ((EMC_SPINDLE_HALT *) buffer)->update(cms); break; case EMC_SPINDLE_INCREASE_TYPE: ((EMC_SPINDLE_INCREASE *) buffer)->update(cms); break; case EMC_SPINDLE_INIT_TYPE: ((EMC_SPINDLE_INIT *) buffer)->update(cms); break; case EMC_SPINDLE_OFF_TYPE: ((EMC_SPINDLE_OFF *) buffer)->update(cms); break; case EMC_SPINDLE_ON_TYPE: ((EMC_SPINDLE_ON *) buffer)->update(cms); break; case EMC_SPINDLE_REVERSE_TYPE: ((EMC_SPINDLE_REVERSE *) buffer)->update(cms); break; case EMC_SPINDLE_STAT_TYPE: ((EMC_SPINDLE_STAT *) buffer)->update(cms); break; case EMC_SPINDLE_STOP_TYPE: ((EMC_SPINDLE_STOP *) buffer)->update(cms); break; case EMC_STAT_TYPE: ((EMC_STAT *) buffer)->update(cms); break; case EMC_TASK_ABORT_TYPE: ((EMC_TASK_ABORT *) buffer)->update(cms); break; case EMC_TASK_HALT_TYPE: ((EMC_TASK_HALT *) buffer)->update(cms); break; case EMC_TASK_INIT_TYPE: ((EMC_TASK_INIT *) buffer)->update(cms); break; case EMC_TASK_PLAN_CLOSE_TYPE: ((EMC_TASK_PLAN_CLOSE *) buffer)->update(cms); break; case EMC_TASK_PLAN_END_TYPE: ((EMC_TASK_PLAN_END *) buffer)->update(cms); break; case EMC_TASK_PLAN_EXECUTE_TYPE: ((EMC_TASK_PLAN_EXECUTE *) buffer)->update(cms); break; case EMC_TASK_PLAN_INIT_TYPE: ((EMC_TASK_PLAN_INIT *) buffer)->update(cms); break; case EMC_TASK_PLAN_OPEN_TYPE: ((EMC_TASK_PLAN_OPEN *) buffer)->update(cms); break; case EMC_TASK_PLAN_PAUSE_TYPE: ((EMC_TASK_PLAN_PAUSE *) buffer)->update(cms); break; case EMC_TASK_PLAN_READ_TYPE: ((EMC_TASK_PLAN_READ *) buffer)->update(cms); break; case EMC_TASK_PLAN_RESUME_TYPE: ((EMC_TASK_PLAN_RESUME *) buffer)->update(cms); break; case EMC_TASK_PLAN_RUN_TYPE: ((EMC_TASK_PLAN_RUN *) buffer)->update(cms); break; case EMC_TASK_PLAN_STEP_TYPE: ((EMC_TASK_PLAN_STEP *) buffer)->update(cms); break; case EMC_TASK_PLAN_SYNCH_TYPE: ((EMC_TASK_PLAN_SYNCH *) buffer)->update(cms); break; case EMC_TASK_SET_MODE_TYPE: ((EMC_TASK_SET_MODE *) buffer)->update(cms); break; case EMC_TASK_SET_STATE_TYPE: ((EMC_TASK_SET_STATE *) buffer)->update(cms); break; case EMC_TASK_STAT_TYPE: ((EMC_TASK_STAT *) buffer)->update(cms); break; case EMC_TOOL_ABORT_TYPE: ((EMC_TOOL_ABORT *) buffer)->update(cms); break; case EMC_TOOL_HALT_TYPE: ((EMC_TOOL_HALT *) buffer)->update(cms); break; case EMC_TOOL_INIT_TYPE: ((EMC_TOOL_INIT *) buffer)->update(cms); break; case EMC_TOOL_LOAD_TYPE: ((EMC_TOOL_LOAD *) buffer)->update(cms); break; case EMC_TOOL_LOAD_TOOL_TABLE_TYPE: ((EMC_TOOL_LOAD_TOOL_TABLE *) buffer)->update(cms); break; case EMC_TOOL_PREPARE_TYPE: ((EMC_TOOL_PREPARE *) buffer)->update(cms); break; case EMC_TOOL_SET_OFFSET_TYPE: ((EMC_TOOL_SET_OFFSET *) buffer)->update(cms); break; case EMC_TOOL_STAT_TYPE: ((EMC_TOOL_STAT *) buffer)->update(cms); break; case EMC_TOOL_UNLOAD_TYPE: ((EMC_TOOL_UNLOAD *) buffer)->update(cms); break; case EMC_TRAJ_ABORT_TYPE: ((EMC_TRAJ_ABORT *) buffer)->update(cms); break; case EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG_TYPE: ((EMC_TRAJ_CLEAR_PROBE_TRIPPED_FLAG *) buffer)->update(cms); break; case EMC_TRAJ_DELAY_TYPE: ((EMC_TRAJ_DELAY *) buffer)->update(cms); break; case EMC_TRAJ_DISABLE_TYPE: ((EMC_TRAJ_DISABLE *) buffer)->update(cms); break; case EMC_TRAJ_ENABLE_TYPE: ((EMC_TRAJ_ENABLE *) buffer)->update(cms); break; case EMC_TRAJ_HALT_TYPE: ((EMC_TRAJ_HALT *) buffer)->update(cms); break; case EMC_TRAJ_INIT_TYPE: ((EMC_TRAJ_INIT *) buffer)->update(cms); break; case EMC_TRAJ_LINEAR_MOVE_TYPE: ((EMC_TRAJ_LINEAR_MOVE *) buffer)->update(cms); break; case EMC_TRAJ_PAUSE_TYPE: ((EMC_TRAJ_PAUSE *) buffer)->update(cms); break; case EMC_TRAJ_PROBE_TYPE: ((EMC_TRAJ_PROBE *) buffer)->update(cms); break; case EMC_TRAJ_RESUME_TYPE: ((EMC_TRAJ_RESUME *) buffer)->update(cms); break; case EMC_TRAJ_SET_ACCELERATION_TYPE: ((EMC_TRAJ_SET_ACCELERATION *) buffer)->update(cms); break; case EMC_TRAJ_SET_AXES_TYPE: ((EMC_TRAJ_SET_AXES *) buffer)->update(cms); break; case EMC_TRAJ_SET_CYCLE_TIME_TYPE: ((EMC_TRAJ_SET_CYCLE_TIME *) buffer)->update(cms); break; case EMC_TRAJ_SET_HOME_TYPE: ((EMC_TRAJ_SET_HOME *) buffer)->update(cms); break; case EMC_TRAJ_SET_MAX_ACCELERATION_TYPE: ((EMC_TRAJ_SET_MAX_ACCELERATION *) buffer)->update(cms); break; case EMC_TRAJ_SET_MAX_VELOCITY_TYPE: ((EMC_TRAJ_SET_MAX_VELOCITY *) buffer)->update(cms); break; case EMC_TRAJ_SET_MODE_TYPE: ((EMC_TRAJ_SET_MODE *) buffer)->update(cms); break; case EMC_TRAJ_SET_MOTION_ID_TYPE: ((EMC_TRAJ_SET_MOTION_ID *) buffer)->update(cms); break; case EMC_TRAJ_SET_OFFSET_TYPE: ((EMC_TRAJ_SET_OFFSET *) buffer)->update(cms); break; case EMC_TRAJ_SET_ORIGIN_TYPE: ((EMC_TRAJ_SET_ORIGIN *) buffer)->update(cms); break; case EMC_TRAJ_SET_PROBE_INDEX_TYPE: ((EMC_TRAJ_SET_PROBE_INDEX *) buffer)->update(cms); break; case EMC_TRAJ_SET_PROBE_POLARITY_TYPE: ((EMC_TRAJ_SET_PROBE_POLARITY *) buffer)->update(cms); break; case EMC_TRAJ_SET_SCALE_TYPE: ((EMC_TRAJ_SET_SCALE *) buffer)->update(cms); break; case EMC_TRAJ_SET_TELEOP_ENABLE_TYPE: ((EMC_TRAJ_SET_TELEOP_ENABLE *) buffer)->update(cms); break; case EMC_TRAJ_SET_TELEOP_VECTOR_TYPE: ((EMC_TRAJ_SET_TELEOP_VECTOR *) buffer)->update(cms); break; case EMC_TRAJ_SET_TERM_COND_TYPE: ((EMC_TRAJ_SET_TERM_COND *) buffer)->update(cms); break; case EMC_TRAJ_SET_SPINDLESYNC_TYPE: ((EMC_TRAJ_SET_SPINDLESYNC *) buffer)->update(cms); break; case EMC_TRAJ_SET_UNITS_TYPE: ((EMC_TRAJ_SET_UNITS *) buffer)->update(cms); break; case EMC_TRAJ_SET_VELOCITY_TYPE: ((EMC_TRAJ_SET_VELOCITY *) buffer)->update(cms); break; case EMC_TRAJ_STAT_TYPE: ((EMC_TRAJ_STAT *) buffer)->update(cms); break; case EMC_TRAJ_STEP_TYPE: ((EMC_TRAJ_STEP *) buffer)->update(cms); break; default: return (0); } return 1;}// NML Symbol Lookup Functionconst char *emc_symbol_lookup(long type){ switch (type) { case EMC_ABORT_TYPE: return "EMC_ABORT"; case EMC_AUX_ABORT_TYPE: return "EMC_AUX_ABORT"; case EMC_AUX_AIO_WRITE_TYPE: return "EMC_AUX_AIO_WRITE"; case EMC_AUX_DIO_WRITE_TYPE: return "EMC_AUX_DIO_WRITE"; case EMC_AUX_ESTOP_RESET_TYPE: return "EMC_AUX_ESTOP_RESET"; case EMC_AUX_ESTOP_OFF_TYPE: return "EMC_AUX_ESTOP_OFF"; case EMC_AUX_ESTOP_ON_TYPE: return "EMC_AUX_ESTOP_ON"; case EMC_AUX_HALT_TYPE: return "EMC_AUX_HALT"; case EMC_AUX_INIT_TYPE: return "EMC_AUX_INIT"; case EMC_AUX_STAT_TYPE: return "EMC_AUX_STAT"; case EMC_AXIS_ABORT_TYPE: return "EMC_AXIS_ABORT"; case EMC_AXIS_ABS_JOG_TYPE: return "EMC_AXIS_ABS_JOG"; case EMC_AXIS_ACTIVATE_TYPE: return "EMC_AXIS_ACTIVATE"; case EMC_AXIS_ALTER_TYPE: return "EMC_AXIS_ALTER"; case EMC_AXIS_DEACTIVATE_TYPE: return "EMC_AXIS_DEACTIVATE"; case EMC_AXIS_DISABLE_TYPE: return "EMC_AXIS_DISABLE"; case EMC_AXIS_ENABLE_TYPE: return "EMC_AXIS_ENABLE"; case EMC_AXIS_HALT_TYPE: return "EMC_AXIS_HALT"; case EMC_AXIS_HOME_TYPE: return "EMC_AXIS_HOME"; case EMC_AXIS_INCR_JOG_TYPE: return "EMC_AXIS_INCR_JOG"; case EMC_AXIS_INIT_TYPE: return "EMC_AXIS_INIT"; case EMC_AXIS_JOG_TYPE: return "EMC_AXIS_JOG"; case EMC_AXIS_LOAD_COMP_TYPE: return "EMC_AXIS_LOAD_COMP"; case EMC_AXIS_OVERRIDE_LIMITS_TYPE: return "EMC_AXIS_OVERRIDE_LIMITS"; case EMC_AXIS_SET_AXIS_TYPE: return "EMC_AXIS_SET_AXIS"; case EMC_AXIS_SET_CYCLE_TIME_TYPE: return "EMC_AXIS_SET_CYCLE_TIME"; case EMC_AXIS_SET_FERROR_TYPE: return "EMC_AXIS_SET_FERROR";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -