1 (изменено: D-r_Safiullin, 2018-10-02 17:00:00)

Тема: AHK: Прокрутка на дробное число строк

Здравствуйте. Искал на русском и на английском языках, но не нашел: при нажатии комбинации клавиш нужна прокрутка на не целое число строк. Например не 4 строки, а 4.8.

Numpad1:: MouseClick, WheelUp,,,4.8

Проматывает ровно на 4 стоки почему-то

2 (изменено: teadrinker, 2018-10-01 20:16:55)

Re: AHK: Прокрутка на дробное число строк

Это примерно одно и то же, что спросить: а как можно кликнуть мышью 4.8 раз?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

3 (изменено: stealzy, 2018-10-02 01:57:58)

Re: AHK: Прокрутка на дробное число строк

Панель управления → устройства → мышь → колесо. В количестве строк выставляете число 4.8 — все просто .
В HKCU\Control Panel\Desktop\WheelScrollLines записывается в строковом виде, интересно было бы попытаться применить такие настройки, хотя понятно что ничего из этого не выйдет, но какова будет реакция системы. Попробовал в gui панели управления снять стиль ES_Number, но ввести точку не вышло - так на событие ввода стоит активный обработчик, который кроме цифр позволяет ввести только пробелы.

4

Re: AHK: Прокрутка на дробное число строк

teadrinker пишет:

Это примерно одно и то же, что спросить: а как можно кликнуть мышью 4.8 раз?

Я так не считаю:
https://docs.microsoft.com/en-us/window … mousewheel

5 (изменено: stealzy, 2018-10-02 12:16:52)

Re: AHK: Прокрутка на дробное число строк

MOUSEEVENTF_WHEEL := 0x800, LINE_HEIGHT := 30
WHEEL_DELTA := 4.8*LINE_HEIGHT, dx := 0, dy := 0, dir := -1
DllCall("mouse_event", uint, dwFlags := MOUSEEVENTF_WHEEL, int, dx ,int, dy, uint, dir*WHEEL_DELTA, int, 0)

6

Re: AHK: Прокрутка на дробное число строк

LINE_HEIGHT := 40

7

Re: AHK: Прокрутка на дробное число строк

Коллеги, вы о чём?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

8

Re: AHK: Прокрутка на дробное число строк

MalcevCorrectionApprovement := true

9

Re: AHK: Прокрутка на дробное число строк

И что, работает?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

10

Re: AHK: Прокрутка на дробное число строк

Не везде.
Тут уже от приложения зависит.

11 (изменено: stealzy, 2018-10-02 16:27:05)

Re: AHK: Прокрутка на дробное число строк

В sublime и firefox - безупречно, а в элементах на основе стандартного Edit или Scintilla(Np++, Scintilla) верхняя строка всегда занимает фиксированное положение, соответсвенно плавный скролл не поддерживается.

12

Re: AHK: Прокрутка на дробное число строк

stealzy пишет:

В sublime и firefox - безупречно

У меня в FF этот код проворачивает действительно на другое расстояние, чем один поворот колеса. До этого в блокноте проверял — не работает. А откуда вы это LINE_HEIGHT взяли?

One wheel click is defined as WHEEL_DELTA, which is 120.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

13

Re: AHK: Прокрутка на дробное число строк

Скрипт отлично работает, спасибо!

Numpad1::
	MOUSEEVENTF_WHEEL := 0x800, LINE_HEIGHT := 30
	WHEEL_DELTA := -4.8*LINE_HEIGHT, dx := 0, dy := 0, dir := -1
	DllCall("mouse_event", uint, dwFlags := MOUSEEVENTF_WHEEL, int, dx ,int, dy, uint, dir*WHEEL_DELTA, int, 0)
Return

Numpad2::
	MOUSEEVENTF_WHEEL := 0x800, LINE_HEIGHT := 30
	WHEEL_DELTA := 4.8*LINE_HEIGHT, dx := 0, dy := 0, dir := -1
	DllCall("mouse_event", uint, dwFlags := MOUSEEVENTF_WHEEL, int, dx ,int, dy, uint, dir*WHEEL_DELTA, int, 0)
Return

14 (изменено: stealzy, 2018-10-02 17:41:31)

Re: AHK: Прокрутка на дробное число строк

По дефолту прокрутка колеса 3 строки, WHEEL_DELTA/3 = 40.
В блокноте стандартный Edit в принципе не умеет плавный скроллинг.

15

Re: AHK: Прокрутка на дробное число строк

stealzy пишет:

По дефолту прокрутка WHEEL_DELTA равна 3 строкам

Да, но вариант кода, где LINE_HEIGHT := 40 у меня в FF прокручивает на меньшее расстояние, чем поворот колеса. У меня поворот колеса 3 строки.

stealzy пишет:

В блокноте - стандартный Edit, как он должен на дробную часть прокручивать, если он в принципе не умеет частично отображать верхнюю строку?

В блокноте не получилось не только повернуть на дробную часть, но и на любое число, не кратное 3.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

16 (изменено: stealzy, 2018-10-02 17:57:09)

Re: AHK: Прокрутка на дробное число строк

В Edit/Scintilla прокрутка накапливается. Можно послать 6 раз прокрутку на полстроки, и когда в контроле накопится на 3 строки, произойдет прокрутка на эти самые 3 строки.

У меня в FF этот код проворачивает действительно на другое расстояние, чем один поворот колеса.

ТС это и надо было - 4.8 строки.

17 (изменено: teadrinker, 2018-10-02 18:07:24)

Re: AHK: Прокрутка на дробное число строк

На другое — не значит на 4.8.

teadrinker пишет:

Да, но вариант кода, где LINE_HEIGHT := 40 у меня в FF прокручивает на меньшее расстояние, чем поворот колеса.

А у вас на 4.8 ?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

18 (изменено: stealzy, 2018-10-02 18:22:46)

Re: AHK: Прокрутка на дробное число строк

Да, я проверял, 4.8*40 = 4.8 строки, если совершить это действие 5 раз выйдет прокрутка ровно на 24 строки.
Но это sublime, а что в браузере...

19

Re: AHK: Прокрутка на дробное число строк

А как вы в FF определили точное число строк?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

20 (изменено: teadrinker, 2018-10-02 18:35:59)

Re: AHK: Прокрутка на дробное число строк

Пробовал PhpStorm — тоже только на кратное 3 поворачивает, плавная прокрутка есть. В общем, работает в каких-то приложениях, в некоторых — непредсказуемо.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

21

Re: AHK: Прокрутка на дробное число строк

Предсказуемо.
Тут подробно описано:
https://www.codeproject.com/Articles/15 … pplication

22 (изменено: teadrinker, 2018-10-02 19:20:34)

Re: AHK: Прокрутка на дробное число строк

Malcev пишет:

Предсказуемо

Не-а. Запускаю MS Spy, выбираю WM_MOUSEWHEEL для окна FF. Дискретно прокручиваю колесо мыши, получаю zDelta: -120, запускаю код — получаю zDelta: -192. Всё математически правильно, но прокручивается на меньшее расстояние.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

23

Re: AHK: Прокрутка на дробное число строк

Вот 120:

f1::
MOUSEEVENTF_WHEEL := 0x800, LINE_HEIGHT := 40
WHEEL_DELTA := 3*LINE_HEIGHT, dx := 0, dy := 0, dir := -1
DllCall("mouse_event", uint, dwFlags := MOUSEEVENTF_WHEEL, int, dx ,int, dy, uint, dir*WHEEL_DELTA, int, 0)

24

Re: AHK: Прокрутка на дробное число строк

Да, вот так у меня прокручивает страницу в FF ровно на такое же расстояние, как один поворот колеса. Но если сделать коэффициент 4.8, почему-то прокручивает на меньшее расстояние.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

25

Re: AHK: Прокрутка на дробное число строк

Больше 3 фаерфокс не обрабатывает.
Поэтому так можно:

f1::
MOUSEEVENTF_WHEEL := 0x800, LINE_HEIGHT := 40
WHEEL_DELTA := 3*LINE_HEIGHT, dx := 0, dy := 0, dir := -1
DllCall("mouse_event", uint, dwFlags := MOUSEEVENTF_WHEEL, int, dx ,int, dy, uint, dir*WHEEL_DELTA, int, 0)
sleep 10
WHEEL_DELTA := 1.8*LINE_HEIGHT, dx := 0, dy := 0, dir := -1
DllCall("mouse_event", uint, dwFlags := MOUSEEVENTF_WHEEL, int, dx ,int, dy, uint, dir*WHEEL_DELTA, int, 0)