Горячие клавиши в EMC2

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
kaa3951

Горячие клавиши в EMC2

Сообщение kaa3951 »

Подключил дополнительную цифровую клавиатуру. Очень удобно. Но чтобы стало еще удобней хочется вынести на нее еще несколько клавиш - "запуск программы", "пауза", "продолжить".
По умолчанию в EMC2 запуск, например, производиться клавишей "R", а хочется "+" на доп. клавиатуре. Как это сделать?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение Nick »

Интересный вопрос :).
А каким ты пользуешься GUI? Axis?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение Nick »

Есть простое решение - xmodmap.
xmodmap - utility for modifying keymaps and pointer button mappings in X
при помощи xmodmap можно заменить любую клавишу или комбинацию клавиш на любую другую.

---------------------------
Update.

В домашней директории должен быть файл ~/.axis_preferences . в нем описаны настройки Axis осталось понять как там задать hotkeys.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение Nick »

Вот, нашел:
If it exists, the contents of ~/.axisrc are executed as Python source code just before the AXIS gui
is displayed. The details of what may be written in the axisrc are subject to change during the
development cycle.

The following adds Control-Q as a keyboard shortcut for Quit and turns on "Distance to go" by
default.

root_window.bind("<Control-q>", "destroy .")
help2.append(("Control-Q", "Quit"))
vars.show_distance_to_go.set(1)
Содержимое файла ~/.axisrc, если он существует, выполняется как скрипт Python прямо перед показом AXIS gui.
Согласно примеру, если добавить такую строчку, то на "-" будет запускаться обработка
root_window.bind("-", commands.task_run)

Хотя, я не уверен на счет правильного описания клавиши... Сейчас уточню...
kaa39518
Новичок
Сообщения: 14
Зарегистрирован: 20 ноя 2010, 05:07
Репутация: 0
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение kaa39518 »

root писал(а):Интересный вопрос :).
А каким ты пользуешься GUI? Axis?
Наверное который Axis.

Спасибо!
Завтра буду пробовать.
Последний раз редактировалось kaa39518 22 ноя 2010, 04:01, всего редактировалось 2 раза.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение Nick »

Нашел правильные названия клавиш для numpad. Причем у них есть разные значения при включенном и выключенном numlock:

KP_0 90 65438 0 on the keypad
KP_1 87 65436 1 on the keypad
KP_2 88 65433 2 on the keypad
KP_3 89 65435 3 on the keypad
KP_4 83 65430 4 on the keypad
KP_5 84 65437 5 on the keypad
KP_6 85 65432 6 on the keypad
KP_7 79 65429 7 on the keypad
KP_8 80 65431 8 on the keypad
KP_9 81 65434 9 on the keypad
KP_Add 86 65451 + on the keypad
KP_Begin 84 65437 The center key (same key as 5) on the keypad
KP_Decimal 91 65439 Decimal (.) on the keypad
KP_Delete 91 65439 delete on the keypad
KP_Divide 112 65455 / on the keypad
KP_Down 88 65433 ↓ on the keypad
KP_End 87 65436 end on the keypad
KP_Enter 108 65421 enter on the keypad
KP_Home 79 65429 home on the keypad
KP_Insert 90 65438 insert on the keypad
KP_Left 83 65430 ← on the keypad
KP_Multiply 63 65450 × on the keypad
KP_Next 89 65435 PageDown on the keypad
KP_Prior 81 65434 PageUp on the keypad
KP_Right 85 65432 → on the keypad
KP_Subtract 82 65453 - on the keypad
KP_Up 80 65431 ↑ on the keypad
Next 105 65366 PageDown
Num_Lock 77 65407 NumLock
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение NightV »

команды по умолчанию, содраны из usr/bin/axis
тоесть там-же их можно и изменить, из под root (не забываем делать резервную копию файла)

Код: Выделить всё

root_window.bind("<Escape>", commands.task_stop)
root_window.bind("l", commands.toggle_override_limits)
root_window.bind("o", commands.open_file)
root_window.bind("s", commands.task_resume)
root_window.bind("t", commands.task_step)
root_window.bind("p", commands.task_pause)
root_window.bind("v", commands.cycle_view)
root_window.bind("<Alt-p>", "#nothing")
root_window.bind("r", commands.task_run)
root_window.bind("<Control-r>", commands.reload_file)
root_window.bind("<Control-s>", commands.save_gcode)
root_window.bind_class("all", "<Key-F1>", commands.estop_clicked)
root_window.bind("<Key-F2>", commands.onoff_clicked)
root_window.bind("<Key-F7>", commands.mist_toggle)
root_window.bind("<Key-F8>", commands.flood_toggle)
root_window.bind("<Key-F9>", commands.spindle_forward_toggle)
root_window.bind("<Key-F10>", commands.spindle_backward_toggle)
root_window.bind("<Key-F11>", commands.spindle_decrease)
root_window.bind("<Key-F12>", commands.spindle_increase)
root_window.bind("B", commands.brake_on)
root_window.bind("b", commands.brake_off)
root_window.bind("<Control-k>", commands.clear_live_plot)
root_window.bind("x", lambda event: activate_axis(0))
root_window.bind("y", lambda event: activate_axis(1))
root_window.bind("z", lambda event: activate_axis(2))
root_window.bind("a", lambda event: activate_axis(3))
root_window.bind("`", lambda event: activate_axis_or_set_feedrate(0))
root_window.bind("1", lambda event: activate_axis_or_set_feedrate(1))
root_window.bind("2", lambda event: activate_axis_or_set_feedrate(2))
root_window.bind("3", lambda event: activate_axis_or_set_feedrate(3))
root_window.bind("4", lambda event: activate_axis_or_set_feedrate(4))
root_window.bind("5", lambda event: activate_axis_or_set_feedrate(5))
root_window.bind("6", lambda event: activate_axis_or_set_feedrate(6))
root_window.bind("7", lambda event: activate_axis_or_set_feedrate(7))
root_window.bind("8", lambda event: activate_axis_or_set_feedrate(8))
root_window.bind("9", lambda event: set_feedrate(90))
root_window.bind("0", lambda event: set_feedrate(100))
root_window.bind("c", lambda event: jogspeed_continuous())
root_window.bind("d", lambda event: widgets.rotate.invoke())
root_window.bind("i", lambda event: jogspeed_incremental())
root_window.bind("I", lambda event: jogspeed_incremental(-1))
root_window.bind("!", "set metric [expr {!$metric}]; redraw")
root_window.bind("@", commands.toggle_display_type)
root_window.bind("#", commands.toggle_coord_type)
root_window.bind("$", commands.toggle_joint_mode)

root_window.bind("<Home>", commands.home_axis)
root_window.bind("<KP_Home>", kp_wrap(commands.home_axis, "KeyPress"))
root_window.bind("<Control-Home>", commands.home_all_axes)
root_window.bind("<Shift-Home>", commands.set_axis_offset)
root_window.bind("<End>", commands.touch_off)
root_window.bind("<Control-KP_Home>", kp_wrap(commands.home_all_axes, "KeyPress"))
root_window.bind("<Shift-KP_Home>", kp_wrap(commands.set_axis_offset, "KeyPress"))
root_window.bind("<KP_End>", kp_wrap(commands.touch_off, "KeyPress"))
widgets.mdi_history.bind("<Configure>", "%W see end" )
widgets.mdi_history.bind("<ButtonRelease-1>", commands.mdi_history_butt_1)
widgets.mdi_history.bind("<Double-Button-1>", commands.mdi_history_double_butt_1)
widgets.mdi_command.unbind("<Control-h>")
widgets.mdi_command.bind("<Control-m>", commands.clear_mdi_history)
widgets.mdi_command.bind("<Control-h>", commands.mdi_history_hist2clip)
widgets.mdi_command.bind("<Control-Shift-H>", commands.mdi_history_clip2hist)
widgets.mdi_command.bind("<Key-Return>", commands.send_mdi)
widgets.mdi_command.bind("<Up>",  commands.mdi_up_cmd)
widgets.mdi_command.bind("<Down>", commands.mdi_down_cmd)
widgets.mdi_command.bind("<Key-KP_Enter>", commands.send_mdi)
widgets.mdi_command.bind("<KP_Up>",  commands.mdi_up_cmd)
widgets.mdi_command.bind("<KP_Down>", commands.mdi_down_cmd)
widgets.mdi_command.bind("<KeyRelease-minus>", "break")
widgets.mdi_command.bind("<KeyRelease-equal>", "break")
Всё просто! если знаешь КАК!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение Nick »

лучше через ~/.axisrc, так при обновлении ничего не пропадет ;).
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение NightV »

я знаю, просто это как пример написания дал, ну и как список уже существующих
Всё просто! если знаешь КАК!
Аватара пользователя
mantra
Кандидат
Сообщения: 71
Зарегистрирован: 07 апр 2018, 15:11
Репутация: 4
Настоящее имя: Дмитрий
Контактная информация:

Re: Горячие клавиши в EMC2

Сообщение mantra »

Подскажите плз, правильный синтакс.
Хочу забиндить клавиши нумпада - и + для уменьшения и повышения скорости перемещения осей в ручную.

По умолчания стоят <, > decrement or increment axis speed
bind ManualBindings <KeyPress-comma> {decrJogSpeed}
bind ManualBindings <KeyPress-period> {incrJogSpeed}

Еще интересует вопрос можно ли назначать горячие клавиши для самостоятельно созданных панелей-кнопок?
Ответить

Вернуться в «LinuxCNC»