Клавиатурные макросы с CtrlO и CtrlAltShift

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by iva » Sat 18 Oct, 2014 07:45

Записываю макрос из редактора по Ctrl-точка. В макросе нажатие двух клавиш CtrlO и Space. При записи макроса CtrlO работает, а при воспроизведении нет. Если макрос состоит из нажания CtrlAltShift, то опять же при записи CtrlAltShift срабатывает, но макрос вообще не записывается.
Так и должно быть, или это уменя что-то неправильно?
Как все таки включить в макрос действия, назначенные на CtrlO и CtrlAltShift?

Shmuel
Posts: 5836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 213 times

Re: Клавиатурные макросы с CtrlO и CtrlAltShift

Post by Shmuel » Sat 18 Oct, 2014 08:03

На мантис, наверное. Это поведение наблюдается как минимум от Far 2 (Far 1 не проверял).

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Клавиатурные макросы с CtrlO и CtrlAltShift

Post by John Doe » Sun 19 Oct, 2014 10:53

>При записи макроса CtrlO работает, а при воспроизведении нет.
Подозреваю что всё заработает, если вы измените параметр
[x] Разрешить во время выполнения вывод на экран (это можно например сделать завершая запись макроса комбинацией CtrlShiftDot
Но чего вы хотите добиться этим макросом?

>Если макрос состоит из нажания CtrlAltShift
Скорее всего есть другие способы добиться нужного эффекта.
Нужно знать цель вашего макроса.

>Так и должно быть, или это уменя что-то неправильно?
Вероятнее всего так и должно, по дизайну. Но всё можно поменять, при необходимости.

iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Re: Клавиатурные макросы с CtrlO и CtrlAltShift

Post by iva » Sun 19 Oct, 2014 11:20

Спасибо, с флагом EnableOutout нажатие CtrlO срабатывает, но далее макрос почему-то ждет нажатия клавиши, и только после этого продолжает выполнение.
Изначальная моя цель была такая. Дело в том, что мне бывает нужно отсчитать определенное число позиций в строке. Для этого я себе рисую примитивную линейку (Ruler) при помощи io.write. С помощью CtrlO или CtrlAltShift я просто хотел почистить экран от таких линеек.

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Клавиатурные макросы с CtrlO и CtrlAltShift

Post by John Doe » Sun 19 Oct, 2014 11:23

editor.Redraw()

P.S.
А линейки тоже можно рисовать через апи: far.Text

Shmuel
Posts: 5836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 22 times
Been thanked: 213 times

Re: Клавиатурные макросы с CtrlO и CtrlAltShift

Post by Shmuel » Sun 19 Oct, 2014 11:33

John Doe wrote:Подозреваю что всё заработает, если вы измените параметр
[x] Разрешить во время выполнения вывод на экран
Там баг - Space попадает в редактор. Поэтому я и посоветовал записать на мантис.

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Re: Клавиатурные макросы с CtrlO и CtrlAltShift

Post by John Doe » Sun 19 Oct, 2014 11:37

А точнее после CtrlO фар ждёт реального нажатия клавиши, после чего макрос продолжается, со всеми вытекающими.
Криво в редакторе UserScreen реализован, да.

User avatar
HaRT
Moderator
Posts: 8832
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 86 times
Been thanked: 151 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by HaRT » Sun 19 Oct, 2014 13:06


iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by iva » Sun 19 Oct, 2014 13:57

1) editor.Redraw() не чистит экран от моих линеек.
2) far.Text надо еще научиться использовать, а io.write делает все что мне надо сразу.
3) плагин Ruler требуемой функциональности не представляет, может, конечно, я плохо читал к нему F1. Допустим мне нужно сместить курсор на 30 позиций направо. Как я могу это сделать при помощи Ruler? После выхода из него курсор всегда возвращается на прежнее место.

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by John Doe » Sun 19 Oct, 2014 13:59

1) far.AdvControl"ACTL_REDRAWALL"

P.S.
Или попробуйте просто far.Text(). Или его сочетание с одной из предыдущих команд.

iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by iva » Sun 19 Oct, 2014 14:29

У меня не работает ни editor.Redraw(), ни far.AdvControl"ACTL_REDRAWALL", а far.Text() выдает ошибку о том, что ожидается числовой параметр в аргументе. Может, конечно, у меня FAR старый 3.0.3525.
Описываю ситуацию подробно. На ShiftSpace назначен макрос

Code: Select all

area="Editor"
key="ShiftSpace"
flags=""
description="Ruler"
code=[[
io.write("|----.----|----.----|----.----|----.----|----.----|")
Keys("Right Left")
]]
На CtrlSpace назначаю макрос

Code: Select all

area="Editor"
key="CtrlSpace"
flags="EnableOutput"
description=""
code=[[
far.AdvControl"ACTL_REDRAWALL"
editor.Redraw()  
]]
Первый рисует линейку, второй должен её стирать, но не стирает.

User avatar
zg
zero-gravity
Posts: 5572
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 89 times
Contact:

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by zg » Sun 19 Oct, 2014 14:37

iva wrote:Может, конечно, у меня FAR старый 3.0.3525.
зачем вы рапортуете об ошибках, если всё равно пользуетесь старым фаром?

User avatar
John Doe
Бюрократ
Posts: 12323
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 168 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by John Doe » Sun 19 Oct, 2014 14:41

iva wrote: У меня не работает ни editor.Redraw(), ни far.AdvControl"ACTL_REDRAWALL"
Да, действительно. Если не хотите вникать в синтаксис far.Text, то вот вам эквивалент CtrlO

Code: Select all

panel.GetUserScreen ()
panel.SetUserScreen ()
P.S.
Вы используете клавиатурные макросы, но для вашей задачи больше подойдут стационарные.
Разница небольшая, но всё равно придётся открыть мануал.

iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by iva » Sun 19 Oct, 2014 15:47

Спасибо. Так заработало.

P.S. Я бы с удовольствием узнал больше о возможностях программирования под FAR, но к сожалению найти информацию очень трудно. Как и в данном случае трудно дагадаться, что, находясь в редакторе, нужно вызывать функции panel. Повидимому нужен еще один "мануал", в котором бы было написано как пользоваться предоставляемой с FAR документацией, где что искать и как.

P.P.S. Вы меня уже второй раз попрекаете, что я использую старую версию FAR. Хотел попробовать на новом 4040, но сходу что-то сразу пошло не так. При попытка из MacroBrowser по CtrlPgUp перейти к макросам, выскакивает ошибка, о том что файла нет. И действительно его нет, а при выходе из FAR макросы теряются.
Разбираться неохота, так что возвращаюсь к уже более-менее привычному 3525.

iva
Posts: 126
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by iva » Sun 19 Oct, 2014 15:55

Оказалось достаточно одного panel.SetUserScreen()

User avatar
zg
zero-gravity
Posts: 5572
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 89 times
Contact:

Клавиатурные макросы с CtrlO и CtrlAltShift

Post by zg » Sun 19 Oct, 2014 16:05

iva wrote:Вы меня уже второй раз попрекаете, что я использую старую версию FAR.
не надо передёргивать. хотите пользоваться старой версией — пользуйтесь на здоровье, но не надо писать сюда о своих проблемах.

Post Reply

Return to “Нужна помощь”