Ru-Board.club
← Вернуться в раздел «Программы»

» StrokesPlus - жесты мыши для Windows

Автор: Edmanz
Дата сообщения: 22.02.2016 18:55
Как прописать нажатие на клавиатуре стрелка влево и стрелка вправо?

Нужно загнать в жест сочетание: Win+стрелка вправо, чтобы активное окно прилепилось к правому краю экрана.
Win - это "@" в acSendKeys, а шифровку стрелок не знаю.
Автор: silealio
Дата сообщения: 23.02.2016 04:44
Edmanz
-коллега, там, в окне жестов, жмите Хелп - и внизу открывшейся страницы есть все клавиши.

{LEFT} = VK_LEFT
{RIGHT} = VK_RIGHT
Автор: gerzikon
Дата сообщения: 28.02.2016 22:36

Цитата:
Проблема с жестами в CADовском ПО (в трех разных прогах одинаково). Ссылка на видео в конце поста.
 
При масштабировании винды с отключенной XP-совместимостью, жесты "отскакивают" на дистанцию от курсора и срабатывают крайне редко.
Программы эти не DPI-aware, насколько я понял. Тоесть масштабируются плохо, с замыливанием шрифтов. Но и жесты становятся непригодны.
С птичкой XP-совместимости (или в масштабе 100%), жесты в этом ПО работают нормально.
Может, где какую волшебную настройку в StrokesPlus пропустил, не?
https://www.youtube.com/watch?v=4uoN_knQkBE&ab_channel=Tehnik


У меня точно такая же ситуация. Масштаб 150%, win7, курсор мыши не совпадал с жестом (только у меня он был строго вправо и вниз смещен на одну треть - в итоге жесты срабатывали только в верней и левой части экрана размером две третих) и в настройках винды галочка на XP-совместимости не стоит. Мне помогло сдедующее: на ярлыке StrokesPlus ПКМ - Свойства - Совместимость — установить галочку на "Отключать масштабирование изображения при высоком разрешении экрана". После этого жест стал совпадать с курсором мыши. Насколько я раньше еще понял эта настройка фактически для каждого отдельного приложения делает то же самое что и "XP-совместимость" для всей системы.
Автор: AnHot
Дата сообщения: 03.03.2016 20:41
У меня на дополнительных кнопках мыши посажены команды "вперёд" и "назад". Подскажите, пожалуйста, как переназначить, чтобы они везде были "копировать" и "вставить", при нажатии только этих клавиш, без нажатия на Stroke button (у меня - правая кнопка). А ещё у меня почему-то не получилось сделать жестом выход из Windwos. Окна закрывает, а из ОС не выходит.
Автор: PREVED
Дата сообщения: 06.03.2016 12:13
AnHot

Цитата:
. Подскажите, пожалуйста, как переназначить, чтобы они везде были "копировать" и "вставить", при нажатии только этих клавиш, без нажатия на Stroke button (у меня - правая кнопка)


Так нельзя. В S+ для того, чтобы жест считался выполненным, нужно нажимать Strokes button плюс модификаторы.
Для вашей задачи нужен другой софт, способный глобально переназначить функцию той или и ной кнопки мыши (обычно это умеют делать утилиты/драйвера поставляемые производителем мыши).

Можно сделать в S+ горячую клавиши для функций копировать/вставить (на lua). И вызывать эту горячую клавишу из стороннего приложения для переназначения кнопок мыши.


Цитата:
А ещё у меня почему-то не получилось сделать жестом выход из Windwos. Окна закрывает, а из ОС не выходит.


Выход из текущего пользователя? acRunProgram в помощь. Консольных утилит хватает, которые умеют выполнять эти действия.
Автор: MadMagezz
Дата сообщения: 11.03.2016 22:01

Цитата:
1. Добавляем код в скрипт Global Lua, а именно во внутрь функции function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact) вставляем:


Цитата:
2. Добавляем в жест. В данном примере "закрыть вкладку" в браузере:

Windows 10 Home (14271), как не бился с этими вставками, результата при русской раскладке не добился. Причём ряд команд из глобальных срабатывают всегда при любой раскладке (например windows maximize/minmize). А ряд команд не срабатывают никогда (ctrl+tab)
Пробовал вообще отключать изменение раскладки с клавиатуры (кроме win+space, этот вариант походу намертво зашит в винде).
Собственно желание было только одно. Ряд команд работающих при любом браузере: ctrl+w, ctrl+tab, ctrl+t, ctrl+shift+t, etc.
Может кто-нибудь подскажет ещё вариант, который сработает в десятке?
Автор: PREVED
Дата сообщения: 13.03.2016 13:24
MadMagezz

Цитата:
Windows 10 Home (14271), как не бился с этими вставками, результата при русской раскладке не добился. Причём ряд команд из глобальных срабатывают всегда при любой раскладке (например windows maximize/minmize). А ряд команд не срабатывают никогда (ctrl+tab)


Работа комбинации Ctrl+Tab не должна зависеть от текущей раскладки. Как и функции maximize / minimize для окон - те вообще напрямую к окнам обращаются.


Цитата:
Собственно желание было только одно. Ряд команд работающих при любом браузере: ctrl+w, ctrl+tab, ctrl+t, ctrl+shift+t, etc.
Может кто-нибудь подскажет ещё вариант, который сработает в десятке?


S+ с полными правами запускается и работает?
Какие браузеры?
Какие раскладки? Русский / английский или есть еще чего-то?
Автор: Xenaki
Дата сообщения: 13.03.2016 16:18
PREVED
Здравствуйте, подскажите пожалуйста, можно ли ввести условие If "Окно, на котором происходит жест, в Fullscreen или развернутое на весь экран", чтобы добавить на него дополнительное действие, в отличии от обычного?
Автор: PREVED
Дата сообщения: 13.03.2016 16:56
Xenaki

Цитата:
Здравствуйте, подскажите пожалуйста, можно ли ввести условие If "Окно, на котором происходит жест, в Fullscreen или развернутое на весь экран"


Отредактировал пост

Извиняюсь, вопрос неправильно понял.
Что касается возможного решения. Чтобы определить что окно развернуто (но при этом не в полноэкранном режиме!), нужно отследить нижнюю координату, исходя из размера панели задач Windows. Когда окно развернуто, значение нижней координаты будет меньше чем высота экрана МИНУС ширина панели задач. Если условие не выполняется - окно в полноэкранном режиме. Для получения нижней координаты используется команда acGetWindowBottom. Принцип понятен? Значения нужно подгонять под экранное разрешение.
Автор: Xenaki
Дата сообщения: 15.03.2016 17:35
PREVED
Вы наверное всё правильно поняли, окно видео плеера должно быть либо в Fullscreen либо в оконном режиме, и для Fullscreen в жест нужно добавить другой код.

Пытался шаманить с вашим кодом, но ничего не получается, вот код ниже выполняет только {RIGHT} в обоих состояниях окна, хотя обычное окно явно выше нижней границы экрана.

Код: local topWindow1 = acGetWindowTop(acGetOwnerWindowByPoint(acGetMouseLocationX(), acGetMouseLocationY()),0,0)
local bottomWindow1 = acGetWindowBottom(acGetOwnerWindowByPoint(acGetMouseLocationX(), acGetMouseLocationY()),0,0)
if topWindow1 < 1 and bottomWindow1 < 1 then
acSendKeys("{LEFT}")
else
acSendKeys("{RIGHT}")
end
Автор: PREVED
Дата сообщения: 16.03.2016 02:39
Xenaki

1. Нижняя координата окна считается не от нижнего края экрана, а от верхнего.

2. Нужно изучать структуру окна используемого видеоплеера (функция "Find Window" в S+). Например, в случае с PotPlayer (по-крайней мере той версии, которая у меня стоит), видео проигрывается внутри дочернего окна плеера с классом MacromediaFlashPlayerActiveX. Соответственно, это же дочернее окно растягивается на весь экран при переключении плеера в полноэкранный режим. Меняем acGetOwnerWindowByPoint на acGetWindowByPoint, делаем проверку нижней координаты исходя из разрешения своего экрана(по вертикали)


Код:
local topWindow1 = acGetWindowTop(acGetWindowByPoint(acGetMouseLocationX(), acGetMouseLocationY()),0,0)
local bottomWindow1 = acGetWindowBottom(acGetWindowByPoint(acGetMouseLocationX(), acGetMouseLocationY()),0,0)
if topWindow1 < 1 and bottomWindow1 > 1049 then
acDisplayText("FULLSCREEN", "Arial", 76, 0, 0, 0, 2000, 500, 400)
acSendKeys("{LEFT}")
else
acDisplayText("WINDOW", "Arial", 76, 0, 0, 0, 2000, 500, 400)
acSendKeys("{RIGHT}")
end
Автор: Xenaki
Дата сообщения: 17.03.2016 14:53
PREVED
Спасибо большое Вам за помощь, сам бы я не додумался. Почти всё получилось, почти, потому что 2 дисплея с разным разрешением (1050 и 1080), ну тут уже не решаемая ситуация.
Автор: PREVED
Дата сообщения: 18.03.2016 09:55
Xenaki

Цитата:
Почти всё получилось, почти, потому что 2 дисплея с разным разрешением (1050 и 1080), ну тут уже не решаемая ситуация.


Ситуация решаемая. Если сделать высоту текущего дисплея (экрана, в котором выполняется жест) не постоянной величиной, а виде переменной. Значение этой переменной (т.е. разрешение экрана по вертикали на активном дисплее) можно брать из функции Windows. То что нашлось в поисковике - нужно вызвать из user32.dll функцию GetSystemMetrics. И S+ позволяет это делать в жестах. Вот простой пример использования системных функций в strokesplus (получение хэндла родительского окна для дочернего через вызов в user32.dll) : http://www.strokesplus.com/forum/topic/455/get-parent-window-by-handle
Автор: SoldatkinD
Дата сообщения: 26.04.2016 10:24
Подскажите как сделать жест команда вверх в проводнике (alt + стрелка вверх)?
Автор: shadow_member
Дата сообщения: 26.04.2016 10:45
Del
Автор: 404NF
Дата сообщения: 27.04.2016 19:43
SoldatkinD
acSendKeys("%{up}")

Хочу настроить жест для выполнения альтернативного действия со ссылками (в частности для открытия ссылки в браузере не по-умолчинию). Не могу сообразить, как получить текст ссылки под курсором. Нужен универсальный способ, не привязанный к клавиатурным сочетаниям или контекстному меню приложений. Подскажите, пожалуйста, если кто в курсе.
Автор: PREVED
Дата сообщения: 28.04.2016 11:10
404NF

Цитата:
Хочу настроить жест для выполнения альтернативного действия со ссылками (в частности для открытия ссылки в браузере не по-умолчинию). Не могу сообразить, как получить текст ссылки под курсором. Нужен универсальный способ, не привязанный к клавиатурным сочетаниям или контекстному меню приложений. Подскажите, пожалуйста, если кто в курсе.


Универсальный способ? Но ведь в разных приложениях интерфейс устроен по разному. Из стандартных Windows-окон (например из диалогов) ссылку под курсором наверное можно получить через какую-нибудь системную функцию.
Автор: silealio
Дата сообщения: 28.04.2016 13:08
По идее, можно вытаскивать любые ссылки из любых мест с помощью WinAPI интерфейса IAccessible - да только, наверное, реализация получится трудоёмкая, да и разобраться в матчасти придётся неслабо...
Автор: 404NF
Дата сообщения: 28.04.2016 20:00
PREVED
Я думал может в Люа есть какая-то встроенная функция для извлечения данных из гиперссылки, вроде как в АНК есть функция для получения данных из файла-ярлыка. Или может есть способ сделать ссылку временно некликабельной - тогда бы ее можно было выделить двойным кликом (правда, это не всегда бы давало желаемый эффект).
Автор: Xenaki
Дата сообщения: 09.06.2016 01:18
Здравствуйте, подскажите пожалуйста, нет ли случайно способа подать команду "Восстановить все окна", т.е., например, Диспетчер задач свёрнут (acMinimizeWindow), а остальные окна развёрнуты (видимы), делаем жест и Диспетчер становится развёрнутым. Желательно, чтобы это происходило в фоне, т.е. не загораживая текущее окно.
Автор: PREVED
Дата сообщения: 14.06.2016 11:23
Xenaki

Вот пример кода, который восстанавливаете последнее свернутое окно:
http://www.strokesplus.com/forum/topic/1090/restore-last-minimized-window

На его основе можно написать скрипт. Логика работы скрипта примерно такая:

1. Сворачиваем окна жестом в S+. Записываем эти окна в переменные. Нужна доработка жеста для сворачивания окон.
2. Пишем жест, с функцией "восстановить все свернутые окна". Жест восстанавливает(из свернутого состояния) окна (ранее свернутые жестом S+) по ранее записанным переменным (хэндлам окон).
3. Насчет того чтобы окна разворачивалось в фоне не загораживая активные - так не получиться. Однако можно в конце процесса разворачивания заново активировать (на передний план) окно, которое было на переднем плане до выполнения жеста "восстановить все свернутые".


Автор: Xenaki
Дата сообщения: 15.06.2016 11:42
PREVED
Спасибо большое, буду адаптировать под свой юзкейс. Кстати, StrokesPlus ведь не может корректно работать портативно или может, не знаете?


Автор, оказывается, запланировал платную версию, интересно, что в ней будет.
Автор: shadow_member
Дата сообщения: 15.06.2016 12:24

Цитата:
корректно работать портативно
может.
Автор: Xenaki
Дата сообщения: 16.06.2016 15:37
shadow_member
Да, подстверждаю, работает, но всё же есть некоторые отличия. Например, нельзя обойти UAC, посылая команды acSendKeys("{LEFT}") acSendKeys("{ENTER}").
Автор: Xenaki
Дата сообщения: 19.06.2016 14:06
Может кто-нибудь знает, поддерживает ли команда acRunProgram, запуск ярлыков (.ink) или только exe? Если да, то как она должна выглядеть?
Автор: PREVED
Дата сообщения: 23.06.2016 11:26
Xenaki

Цитата:
Может кто-нибудь знает, поддерживает ли команда acRunProgram, запуск ярлыков (.ink) или только exe? Если да, то как она должна выглядеть?


acRunProgram не поддерживает.

Для "запуска" файлов есть отдельная команда:

acShellExecute(verb, file, parameters, directory, style)
Parameters:
verb: edit, explore, find, open, print. Search for ShellExecute MSDN on the Internet for more details

В простом варианте:
acShellExecute (open, "C:\Путь_к_файлу\Имя_файла.Расширение")
Автор: Xenaki
Дата сообщения: 23.06.2016 22:57
PREVED
Спасибо большое, Вы как всегда помогли. Нашёл способ, с помощью жестов, запускать программы с правами Администратора без назойливого запроса UAC. Нужно создать задание в Планировщике задач и ярлык для его запуска по этой инструкции или, с помощью программы (есть некоторые преимущества: нормальный приоритет).
Автор: shadow_member
Дата сообщения: 19.07.2016 13:56
Последняя x64 Portable на x64 OS работает очень хорошо, конфиг подходит с х86. За пару мес. использования- ни одного бага, а х86 Portable доставала.
Автор: Xenaki
Дата сообщения: 08.08.2016 21:58
Существует ли подобная программа для тачпадов ноутбуков?

Страницы: 123456789

Предыдущая тема: Программа для скрытого захвата звука с микрофона


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.