PREVED

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Fintrum Цитата: Здравствуйте, подскажите пожалуйста, возможно ли добавить "жест" на ПКМ + СКМ, чтобы пока зажаты эти клавиши посылалась зажатая ЛКМ, при отпускании ПКМ + СКМ, отпускалась и ЛКМ? Т.е. чтобы получить функциональность зажатой левой кнопки мыши и возможность выделять текст или перемещать файлы, а не просто однократный щелчок. | Да, можно так сделать. Ниже рабочий вариант. Важное уточнение. В качестве модификатора (помимо СКМ) придется задействовать и колесо мыши (вращение вверх или вниз - не важно, по выбору пользователя). Без использования колеса в S+ нет возможности выполнять жест ДО отжатия кнопки мыши, используемой для выполнения жестов S+. Поэтому в данном случае для нас подходит только вариант с колесом. 1. Исходим из того, что кнопка мыши для начала выполнения жестов в S+ настроена - правая (Preferences - Stroke button - Right). Модификатор жеста "вращение колеса" лучше сделать - колесо вниз (имхо, так удобнее). В настройках программы (Preferences) также должна быть включена опция Fire Recognition on Mouse Wheel Scroll. 2. Настраиваем Жест (Action): Modifier check - Either Mouse/ Key modifiers - Middle button, Scroll down Код жеста: LMBpressed = 1 acRunProgram("C:\\Windows\\nircmd.exe","sendmouse left down",0,1) acDelay(4000) acRunProgram("C:\\Windows\\nircmd.exe","sendmouse left up",0,1) Примечание 1: acDelay(4000) - задержка в 4 секунды, за которые нужно успеть выполнить драг-н-дроп (через 4 секунды левая кнопка мыши отожмется). Меняем задержку под себя. Примечание 2: Что касается использования. После того, как жест был инициализирован/выполнен (после того как были зажаты последовательно - ПКМ, СКМ и прокручено колесо вниз) держать кнопки нажатыми НЕ требуется, можно отпустить их все и двигать курсор мыши куда потребуется - жест все-равно будет выполнен. 3. Настраиваем глобальный скрипт (Global Lua). Добавляем внутрь функции function sp_before_action(gnm, gsx, gsy, gex, gey, gwd, gapp, gact) следующий код: LMBpressed = 0 Примечание. Не забываем о том, что в самом конце функции function sp_before_action должна стоять строчка со словом end p.s. Используется утилита nircmd. К сожалению, мне не удалось добиться нормальной работы с помощью одних только встроенных функций S+. Стандартная функция S+ acMouseClick (предназначенная для имитации нажатий кнопок мыши) в данном случае вызывает нестабильную работу StrokesPlus и дает эффект "залипания" кнопок, поэтому я остановился на варианте nircmd. Можно заменить на любую другую утилиту, умеющую имитировать нажатия кнопок мыши. Я подозреваю, что есть возможность реализации через WinAPI (функция acSendMessage), но не разобрался т.к., по всей видимости, нужно вешать хук на клики мыши (программирование). Испытывал в проводнике Windows, имитируя перетаскивание файлов с помощью жеста. В простом варианте способа через WinAPI обведение рамочкой файлов работает, а драг-н-дроп (тех же файлов) уже нет. | Всего записей: 1989 | Зарегистр. 10-03-2006 | Отправлено: 19:37 16-12-2015 | Исправлено: PREVED, 19:51 16-12-2015 |
|