Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » StrokesPlus и StrokesPlus.net: жесты мыши для Windows

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Открыть новую тему     Написать ответ в эту тему

PREVED



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   

StrokesPlus (S+) - бесплатная программа с огромными возможностями, позволяющая управлять операционной системой и приложениями при помощи жестов мыши (включая кнопки мыши), а также горячих клавиш. Имеет гибкие настройки, поддерживает выполнение действий, основанных на скриптовом языке Lua. В отличие от аналогичной программы StrokeIt, позволяет настраивать срабатывание жестов внутри дочерних окон (в пределах одного приложения - родительского окна). При определенной настройке и после привыкания резко повышает продуктивность работы, упрощая управляемость компьютером. Имеет 64-битную версию. Среди программ подобного назначения имеет самые большие возможности.
 
Официальный сайт: http://www.strokesplus.com/
Справка (англ.): http://www.strokesplus.com/help/
Форум на официальном сайте (англ.): http://www.strokesplus.com/forum/
 
Скачать:
Версия 32-бит
Портабельная версия(ZIP): http://www.strokesplus.com/files/StrokesPlus_2.8.6.4_x86.zip
Установщик: http://www.strokesplus.com/files/StrokesPlusSetup_2.8.6.4_x86.exe
Установщик (с цифровой подписью для UAC в Windows Vista/7/8/10): http://www.strokesplus.com/files/StrokesPlusSetup_2.8.6.4_x86_Signed.exe
 
Версия 64-бит
Портабельная версия(ZIP): http://www.strokesplus.com/files/StrokesPlus_2.8.6.4_x64.zip
Установщик: http://www.strokesplus.com/files/StrokesPlusSetup_2.8.6.4_x64.exe
Установщик (с цифровой подписью для UAC в Windows Vista/7/8/10): http://www.strokesplus.com/files/StrokesPlusSetup_2.8.6.4_x64_Signed.exe
 
Русификатор: в процессе разработки (степень готовности - высокая)  
 
Важно! Решение проблем с автозапуском и ограниченной функциональностью StrokesPlus в среде Windows 8.1
Важно! Решение проблемы с некорректной работой жестов, связанных с передачей горячих клавиш в русской раскладке в среде Windows 8.1 (и выше)
 


Скриншот:




 


Готовые скрипты:
 
  • Скрипт для переключения между окнами в Windоws при зажатой клавише мыши и вращении колеса(скроллинге) - для Windows 7, Windows XP
     
  • Скрипт для разблокирования родительского окна(окна, блокированного окном дочерним) в любых приложениях - must have
     
  • Скрипт для принудительного сворачивания ЛЮБЫХ окон, в т.ч. окон, которые невозможно свернуть штатными средствами
     
  • Настройка S+ для переключения вкладок посредством скроллинга(колеса мыши) в браузере Opera 12.x(и в более ранних версиях) без появления списка вкладок.
     
  • Настройка S+ для переключения между двумя последними активными вкладками в браузере Opera 12.x(и в более ранних версиях) с помощью жеста мыши
     
  • Жесты для управления окнами и приложениями в Windows: закрыть окно, закрыть приложение(корректно), принудительно закрыть приложение(убить процесс)
     


    StrokesPlus.net - преемник для StrokesPlus. Есть портабельная версия. Требуется предустановленный VC 2015 Runtime.
    На английском. Бесплатно. https://www.strokesplus.net/

  • Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 15:42 16-06-2013 | Исправлено: Maz, 07:39 23-09-2024
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slava10779

    Цитата:
    СВЕЖИЙ ВОПРОС. Как сделать чтобы действие выполнялось с файлом с которого начинается жест, а не на котором заканчивается? Это в Total Commander.

     
    Добавить действие в скрипт после выполнения действия.  Чтобы работало, придется имитировать клик по начальным координатам для выбора файла(См. настройки TC - включенная опция открытия файлов и папок одиночным кликом исключается. Возможно можно обойти через acPostMessage, но не факт).
     
     
    Вот пример жеста для Total Commander. Работает над любой панелью(включая неактивную). Жест вызывает свойства файла, над которым начинался выполняться жест независимо от положения курсора самого TC и от сложности начертания самого жеста.
     
     
    1. Добавить жест для Приложения Total Commander. Скрипт:

    Код:
    TCProperties = 1

     
    2. Дабавить код в Global Lua. Код нужно вставить в функцию function sp_after_action....:
     

    Код:
    if TCProperties == 1 then
    acMouseClick(gsx, gsy, 2, 1, 1)
    acSendKeys("%{ENTER}")
    TCProperties = 0
    end
     

     
    Внимание! Последний оператор end нужно оставить (после вышеприведенного куска кода)!
     
     
    Начинаем делать жест над любым файлом в TC и получаем его свойства.

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 21:00 21-02-2015 | Исправлено: PREVED, 21:07 21-02-2015
    shadow_member



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кажется, уловил причину глюков StrokesPlus на Win81, обычно это происходит на жестах, использующих буквенные горячие клавиши, например, Ctrl + W и т.п. Достаточно выбрать Rus язык ввода, как такие жесты перестают работать, хотя S+ по-прежнему активен, другие жесты работают. При возврате на Eng все жесты снова работают.  
    Часто, но точной закономерности не уловил, при выборе Rus происходит и деактивация S+.
    StrokesPlus в этой же конфигурации на Win7 такого бага не преподносит, т.к. на Win7 четко работает механизм автоматического переключения языка ввода в зависимости от текущего приложения. А вот на Win81 этой четкости добиться не могу.
    Добавлено:
    Или научить S+ переходить на Eng при выполнении жестов, или уходить от горячих клавиш с буквами. Вот чудо-программа.

    Всего записей: 22354 | Зарегистр. 18-07-2006 | Отправлено: 21:11 21-02-2015 | Исправлено: shadow_member, 21:23 21-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    shadow_member
    Установите галочку в Панель управления\Язык\Дополнительные параметры\Переключение методов ввода\Позволить выбирать метода ввода для каждого приложения.

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 21:20 21-02-2015
    shadow_member



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fintrum
    Такой баг (если это баг) я замечаю с момента установки Win81, поэтому все эти настройки прошел не раз- не помогает. На Win7 это работает отлично.
    Ad:
    Да, и английский стоит первым.

    Всего записей: 22354 | Зарегистр. 18-07-2006 | Отправлено: 21:27 21-02-2015 | Исправлено: shadow_member, 07:59 22-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    shadow_member
    Это известная проблема, и она присутствует во многих программах, связанных с сочетаниями клавиш, нужно выставлять английский первым языком, чтобы её минимизировать.
     
    Еще есть способ использовать вместо буквенных сочетаний виртуальные коды команд.
    https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 21:46 21-02-2015
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    shadow_member
     
    А если отправлять горячую клавишу минуя раскладку?
    acSendKeys("^{VKEY 87}")
    (передает Ctrl+W)
     
    Список виртуальных кодов (для того чтобы работало в S+, код нужно перевести из шестнадцатеричного счисления в десятичное): https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 22:05 21-02-2015 | Исправлено: PREVED, 22:06 21-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    Похоже это не решение, отправляет Ctrl+Ц, но вот что странно, во многих программах нет этой проблемы, например, в Firefox или Notepad++, а в Paint.NET есть. Но что еще более странно, в других программах, связанных с сочетаниями клавиш, проблема в Firefox и Notepad++ есть, т.е. нельзя сказать, что эти приложения поддерживают сочетания на всех языках.

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 22:32 21-02-2015
    slava10779

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED, если не сложно напиши код полностью, я скопирую. Я ума не приложу как его вставить в функцию function sp_after_action.

    Всего записей: 294 | Зарегистр. 19-11-2014 | Отправлено: 22:43 21-02-2015
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    shadow_member

    Цитата:
    Часто, но точной закономерности не уловил, при выборе Rus происходит и деактивация S+.

     
    В настройках S+ параметр "Ignore Key" лучше сменить, чтобы он не пересекался с любой из клавиш, которые используются в комбинации для переключения раскладки. Возможно, проблема уйдет.
     

    Цитата:
    Или научить S+ переходить на Eng при выполнении жестов, или уходить от горячих клавиш с буквами. Вот чудо-программа.

     
    Да, можно научить S+ принудительно включать английскую раскладку перед выполнением действия (любого жеста). Код я подсмотрел на официальном форуме (хвала Робу Ларкину) и немного модифицировал под русский язык и нашу задачу. Протестировал на Notepad и Firefox под Windows 7 - работает. Просьба потестировать в Windows 8.1 !
     
     
    1. Добавляем код в скрипт Global Lua, а именно во внутрь функции function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact) вставляем:

    Код:
    aliencore = alien.core
    user32 = aliencore.load("user32.dll")
    gGetKeyboardLayout = user32.GetKeyboardLayout
    gGetKeyboardLayout:types{ ret = 'long', abi = 'stdcall', 'long'}
    function aGetKeyboardLayout(threadID)
        return gGetKeyboardLayout(threadID)
    end
    gGetWindowThreadProcessId = user32.GetWindowThreadProcessId
    gGetWindowThreadProcessId:types{ ret = 'long', abi = 'stdcall', 'long', 'pointer'}
    function aGetWindowThreadProcessId(hwnd)
        local threadID = 0
        threadID = gGetWindowThreadProcessId(hwnd, threadID)
        return threadID
    end

     
    Не забываем про еще один "end" после вышеприведенного кода - его оставляем!
     
     
    2. Добавляем в жест. В данном примере "закрыть вкладку" в браузере:

    Код:
    local iLangID = bit32.rshift(aGetKeyboardLayout(aGetWindowThreadProcessId(acGetOwnerWindowByPoint(gsx,gsy))),16)
    if iLangID == 1049 then
    acSendKeys("^+")
    acDelay(100)
    acDisplayText("Russian -> English", "Arial", 76, 0, 200, 50, 3000, 500, 400)
    acSendKeys("^w")
    --- возвращаем русскую раскладку(если была включена) после выполнения жеста (опционально, раскомментировать две строчки ниже)  
    --- acDelay(100)
    --- acSendKeys("^+")
    else
    acDisplayText("English -> English", "Arial", 76, 0, 200, 50, 3000, 500, 400)
    acSendKeys("^w")
    end
     

     
    Примечания:
    acSendKeys("^+")  - имитирует переключение раскладки. Исходим из того, что раскладок у нас в системе две: Английский (США) и Русский (Россия). В данном примере раскладка переключается комбинацией Ctrl+Shift. Если у вас переключение между языками Alt+Shift(или иной комбинацией) - меняем соответственно.
     
    acSendKeys("^w") - посылаем Ctrl+W для закрытия вкладки. Эта команда в скрипте прописывается в двух строчках.
     
    acDisplayText... - строчки для тестирования срабатывания. В рабочих условиях убираются.
     
    --- - закомментированы две строчки, которые возвращают русскую раскладку (уже после выполнения жеста в английской).
     
    В Windows 8.1. возможно придется поиграться с системной настройкой "индвидуальная раскладка для приложений".

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 00:01 22-02-2015 | Исправлено: PREVED, 14:18 22-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    Ого, спасибо большое, на 8.1 работает отлично, еще один твик в копилку.

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 00:27 22-02-2015
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

     
     
     
    slava10779
     
    1. Вот так должна выглядеть функция function sp_after_action на вкладке Global Lua:
     
       
     
     
    2. Чтобы работало обязательно включаем в Preferences настройку Allow After Action Script.

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 00:32 22-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    А что насчет acRelayGesture()? У Вас Firegestures жест срабатывает моментально и стабильно?

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 00:36 22-02-2015
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fintrum

    Цитата:
    А что насчет acRelayGesture()? У Вас Firegestures жест срабатывает моментально и стабильно?

     
    К сожалению, срабатывает не всегда. Возможно есть какой-то разлад между настройками чувствительности жестов в S+ и в браузере. А может просто функция в программе не доработанная... Проверял на простом жесте "Вниз-Вправо" в Firefox и Opera 12 - стабильного срабатывания (чтобы всегда работало) нет.
     
     
    Есть альтернативный вариант - имитация физического выполнения жеста средствами S+. Как следствие, даже несмотря на то, что жест рисуется S+, он выполняется все-таки в браузере (самим браузером).  
     
    Вот пример простого жеста на действие Закрыть вкладку (Вниз-Вправо).
     

    Код:
    acConsumePhysicalInput(1)
    acMouseMove(gsx, gsy) --двигаем в курсор в начало выполненного жеста S+
    acDelay(50)
    acMouseClick(gsx,gsy,0,1,0) --зажимаем правую кнопку мыши
    acDelay(100)
    acMouseMove(gsx, gsy+300) --рисуем 300 пикселей вертикально вниз
    acDelay(100)
    acMouseMove(gsx+300, acGetMouseLocationY()) --рисуем 300 пикселей вправо
    acDelay(5)
    acMouseClick(acGetMouseLocationX(), acGetMouseLocationY(), 0,0,1) --отпускаем правую кнопку мыши
    acDelay(5)
    acMouseMove(gex,gey) --двигаем курсор в конец жеста S+ (поведение как у родных жестов в браузере)
    acDelay(50)
    acConsumePhysicalInput(0)

     
    В Opera 12 работает как часы. Родной оперовский жест успешно "симулируется" S-плюсом.
    В Firefox с расширением Mouse Gesture Redox не смог добиться работы, вообще никакой. Вместо закрытия создается новая вкладка. Видимо нужно крутить настройки расширения, либо UI Мозиллы настолько тормозит...

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 01:35 22-02-2015 | Исправлено: PREVED, 01:40 22-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED

    Цитата:
    К сожалению, срабатывает не всегда.  

    Ясно, жаль, а Вы не писали автору реквесты? И насчёт проблемы с неанглийской раскладкой?
     

    Цитата:
    Есть альтернативный вариант

    А вот это интересно и работает, спасибо.

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 01:54 22-02-2015
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fintrum

    Цитата:
    Ясно, жаль, а Вы не писали автору реквесты? И насчёт проблемы с неанглийской раскладкой?

     
    К сожалению, автор забросил программу примерно год назад (по личным причинам). О чем официально уведомил и выложил исходный код.
     

    Цитата:
    А вот это интересно и работает, спасибо.

     

    Значит все-таки в расширении дело.

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 02:04 22-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED
    Вот это новость, спасибо, не знал. Хорошо, что последняя версия стабильная, я еще читал на его форуме, что автор собирал идеи для 3 версии и думал он так долго готовит нечто большое.

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 02:24 22-02-2015
    slava10779

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PREVED, вот моя очередность действий:
    1. Настройку  Allow After Action Script включил.
    2. ДОБАВЛЯЮ ДЕЙСТВИЕ ДЛЯ Total Commander
    3. в поле Lua скрипта пишу:
    function sp_after_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact)
    if TCProperties == 1 then
     acMouseClick(gsx, gsy, 2, 1, 1)
     acSendKeys("%{ENTER}")
     TCProperties = 0
     end
    end
    РЕЗУЛЬТАТ-НЕ работает, никаких действий вобще нет.

    Всего записей: 294 | Зарегистр. 19-11-2014 | Отправлено: 09:11 22-02-2015
    Fintrum

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slava10779
    А Вы точно добавляете скрипт в Global Lua вкладку, а не в обычное Lua Script поле жеста? В обычное нужно добавить только "TCProperties = 1".

    Всего записей: 216 | Зарегистр. 01-01-2015 | Отправлено: 09:30 22-02-2015 | Исправлено: Fintrum, 09:31 22-02-2015
    slava10779

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fintrum, уже сделал как вы написали... Теперь работает. Я просто не понял куда что писать. Спасибо за помощь. А записанное в скрипт  TCProperties - это произвольная переменная, которая должна совпадать с записанной в глобальном скрипте или она откуда то берется?

    Всего записей: 294 | Зарегистр. 19-11-2014 | Отправлено: 09:38 22-02-2015 | Исправлено: slava10779, 09:49 22-02-2015
    PREVED



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    slava10779

    Цитата:
    А записанное в скрипт  TCProperties - это произвольная переменная, которая должна совпадать с записанной в глобальном скрипте или она откуда то берется?

     
    TCProperties - пользовательская переменная, поэтому название любое. Главное чтобы название переменной совпадало в Глобальном LUA и в жесте.
    Внутрь функции function sp_after_action... по аналогии вы можете добавлять несколько условий if, т.е. несколько жестов срабатывающих над файлами в TC (с разными действиями).

    Всего записей: 1988 | Зарегистр. 10-03-2006 | Отправлено: 11:58 22-02-2015
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

    Компьютерный форум Ru.Board » Компьютеры » Программы » StrokesPlus и StrokesPlus.net: жесты мыши для Windows


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru