Как правильно применить kbdLayout()?

Здесь обсуждается всё, что касается макросов.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Как правильно применить kbdLayout()?

Post by sToLp »

При составлении макроса пробую в комстроке: macro:post %rskld=print(itoa(kbdLayout(),16));
жму Enter и получаю в строке в зависимости от текущей раскладки 4190419 или 4090409.
Это я что-то не так делаю или бага какая?
Фар 2.1 build 1807 bis19 x86
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Как правильно применить kbdLayout()?

Post by Maximus5 »

Очевидно, вы что-то делаете не так. А именно, вы не написали, чего хотите достичь :P
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Как правильно применить kbdLayout()?

Post by John Doe »

Документацию для кого писали?
http://api.farmanager.com/ru2/macro/mac ... #kbdlayout
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Re: Как правильно применить kbdLayout()?

Post by sToLp »

John Doe wrote:Документацию для кого писали?
пример взят оттуда: №2
Maximus5 wrote: вы не написали, чего хотите достичь
хочу проверить в какой раскладке набран текст, уже имеющийся в комстроке, и если в английской - применить к нему xlat() и далее запустить его на выполнение как алиас
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Как правильно применить kbdLayout()?

Post by Maximus5 »

Что-то мне подсказывает, что вот это

Code: Select all

%rskld=print(itoa(kbdLayout(),16));
не выполняет вот это
в какой раскладке набран текст, уже имеющийся в комстроке, и если в английской - применить к нему xlat() и далее запустить его на выполнение как алиас
Так чего вы все-таки хотели достичь постом №1?
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Re: Как правильно применить kbdLayout()?

Post by sToLp »

Ошибочно полагал, что print() отдаёт результат в переменную, не меняя содержание комстроки...
Простите за необоснованное беспокойство.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Re: Как правильно применить kbdLayout()?

Post by sToLp »

Получилось таки составить макрос, который позволяет удобно работать с макросами замечательного плагина MacroLib http://forum.farmanager.com/viewtopic.p ... 714#p74714 как с алиасами. То есть по их именам, введённым в комстроку.

Code: Select all

macro Area="Shell" Key="CtrlShiftJ NumEnter" Name="исполнитьМакроЛайбом" Cond="CmdLine:1"
Priority=3
Descr="Содержимое комстроки выполнить как алиас плагина MacroLib (подстановкой префикса 'fml:Call ')"
{{
  %%Clv=CmdLine.Value; CtrlY print(itoa(kbdLayout(),16)); clip(1,CmdLine.Value)
  $if (clip(0) == 4090409)
  CtrlY Print("fml:Call "+xlat(%%Clv,1)) Enter
  $else
  CtrlY Print("fml:Call "+%%Clv) Enter
  $end
}}
И теперь мне можно просто набрать имя (алиас) нужного мне мароса в комстроке и нажать Enter на цифровой клавиатуре. И fml-макрос сработает. Сработает даже если ему дано имя "сравнить", а в строке оно набралось как "chfdybnm".

Мне так удобнее работать с переходами во множество нужных мест и во многих других случаях...
Attachments
she-NumEnter-выполнитьFmlКакАлиас(c)sToLp.7z
макрос для запуска fml-макросов как алиасов
(1.03 KiB) Downloaded 176 times
User avatar
SUSim
Posts: 1636
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

Re: Как правильно применить kbdLayout()?

Post by SUSim »

Спонтанно! ЗАЧЕМ, 25 текстовых строк пихать в архив? который весит больше fml ???
макрос неплох, но запустить макрос из ком строки можно любой! почему вы остановились только на .FML
SimSU ··· ·· -- ··· ··-
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Re: Как правильно применить kbdLayout()?

Post by sToLp »

SUSim wrote:ЗАЧЕМ, 25 текстовых строк пихать в архив? который весит больше fml ???
А вы пробовали присоединить fml-файл? Или хотя бы txt? А архивный файл присоединяется запросто.
SUSim wrote:макрос неплох, но запустить макрос из ком строки можно любой! почему вы остановились только на .FML
Fml-макросы могут содержать поле Name= и таким образом через быстрый префикс (штатно - fml:call имяМакроса) запускаться по типу doskey-алиасов из комстроки. А как запустить из командной строки reg-макрос я не знаю. Про другие типы макросов я тоже не ведаю. И буду рад если просветите.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Как правильно применить kbdLayout()?

Post by Skirda »

надо бы в примеры в Писание поместить (или буду улучшалки?/копирайт не позволяет?)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Как правильно применить kbdLayout()?

Post by Centaur »

sToLp wrote:
SUSim wrote:ЗАЧЕМ, 25 текстовых строк пихать в архив? который весит больше fml ???
А вы пробовали присоединить fml-файл? Или хотя бы txt? А архивный файл присоединяется запросто.
Текст не надо «присоединять». Его нужно обрамить в тэг [‌code] и запостить открытым текстом. Чтобы потенциальный пользователь его сначала прочитал и осмыслил, потом скопировал, сохранил и заюзал. В случае же с аттачем вероятна ситуация «скачал, положил и начал использовать» без обязательного шага осмысления.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Как правильно применить kbdLayout()?

Post by Skirda »

sToLp wrote:хочу проверить в какой раскладке набран текст, уже имеющийся в комстроке, и если в английской - применить к нему xlat()
А откуда уверенность в том, что kbdLayout() возвращает значение раскладки, в какой набран текст?
kbdLayout возвращает значение раскладки, включенной в данный момент.
1. Сейчас Eng
2. Набираем ghbdtn
3. Переключаем раскладку на Rus
4. вызываем макрос
каков результат?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Re: Как правильно применить kbdLayout()?

Post by Wave »

КМК, ситуация «не глядя набрал и ткнул энтер» случается чаще, чем «набрал, чего-то поделал, попереключал раскладку и т.п., а потом ткнул энтер».
Мешать может ну разве что в ситуации копипасты. И то, пятьдесят на пятьдесят. Но вообще это каждый должен индивидуально подбирать, какие юз-кейсы у него случаются чаще и что помогает, а что мешает. Например, мне не холодно и не жарко от этого kbdLayout, я печатаю глядя на экран. А перехожу в какие-то места чаще всего с помощью фильтра альтхистори.
Забавно, что макросами уже можно сделать аналоги плагинов HotFolders, NamedFolders, Alias. Кто во что горазд и кому что удобней.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Как правильно применить kbdLayout()?

Post by HaRT »

Centaur wrote:Текст не надо «присоединять». Его нужно обрамить в тэг [‌code] и запостить открытым текстом.
Желательно ещё обрамить в .
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Как правильно применить kbdLayout()?

Post by John Doe »

Имхо.
Текст в теге [code] и так уже ограничен, и не расползается больше минимума. Поэтому если макрос это основное содержание поста, то нет смысла его прятать, и этим заставлять всех до единого кликать по этому спойлеру.
Post Reply

Return to “Обсуждение макросов”