Назначение хоткеев

Автор TanaTiX, 14 апреля 2022, 01:25

0 Пользователи и 1 гость просматривают эту тему.

TanaTiX

Можно пример, как назначить хоткеи определенным функциям? Функции хранятся в файле.

economist

Что есть "функции"? Если это команды/макросы то:

Сервис - Настройка - Клавиатура - команды/макросы
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

sokol92

В LO применяется термин Accelerator.
Вы можете стандартным образом назначить горячую клавишу на макрос, содержащийся в документе (как указано в предыдушем ответе), но работать это будет только в случае, когда этот документ является текущим. В иных случаях при нажатии на горячую клавишу будет возникать ошибка.
Владимир.

eeigor

#3
Да, это плохо, что информацию нельзя хранить вместе с документом. Я от таких горячих клавиш отказался. Вероятно, документ при открытии может их назначать, а при закрытии – "подчищать" за собой, удаляя текущие "назначения".

Если кто-то решал подобную задачу – поделитесь...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

Цитата: eeigor от 14 апреля 2022, 15:09Вероятно, документ при открытии может их назначать, а при закрытии – "подчищать" за собой, удаляя текущие "назначения".

Да, и при этом все параллельно открытые документы будут использовать эти временные назначения с ошибками, а при некорректном завершении программы подчистка не сработает.
С уважением,
Михаил Каганский

sokol92

В версии 4.2 появился сервис DocumentAcceleratorConfiguration. Я не изучал.
Владимир.

TanaTiX

>Сервис - Настройка - Клавиатура - команды/макросы
Да, оно, только программно.
>работать это будет только в случае, когда этот документ является текущим
Само собой.

sokol92

Следующий макрос назначает на комбинацию клавиш Alt+F1 выполнение макроса MyMacro модуля Module1 библиотеки Standard.
Sub TestAccSetKey
   Dim oACC, keyEvent As New com.sun.star.awt.KeyEvent
   oACC=com.sun.star.ui.ModuleAcceleratorConfiguration.createWithModuleIdentifier("com.sun.star.sheet.SpreadsheetDocument") 
   'oACC=GetProcessServiceManager.createInstanceWithArguments("com.sun.star.ui.ModuleAcceleratorConfiguration", Array( "com.sun.star.sheet.SpreadsheetDocument"))
   With keyEvent
     .KeyCode=com.sun.star.awt.Key.F1
     .Modifiers=4   ' Alt
   End With   
   oAcc.setKeyEvent KeyEvent, "vnd.sun.star.script:Standard.Module1.MyMacro?language=Basic&location=document"
   oAcc.store  ' сохраняем конфигурацию
End Sub


К сожалению, изменения вступают в силу только после перезагрузки LO. Не знаю, известный ли это баг. :)
Владимир.

eeigor

Владимир, когда-нибудь всё это заработает...
Благодаря Михаилу я (мы) теперь могу отслеживать изменения параметров пользователем, но макросом сделать то же самое не могу и по той же причине: требуется рестарт.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

Цитата: sokol92 от 15 апреля 2022, 13:02
Не знаю, известный ли это баг. :)

И не стоит тратить время узнавать: вместо этого лучше потратить время и написать новый ;)
С уважением,
Михаил Каганский

sokol92

Владимир.

sokol92

Владимир.

sokol92

Пользователь @F3KTotal на ask.libreoffice.org показал, как можно встраивать горячие клавиши в документ.
Владимир.