В этом посте я напишу, как ускорить работу в тумблере. Дэшборд тумблера имеет встроенную jk-навигацию: j/k - предыдущий/следующий пост, Left/Right - предыдущая/следующая страница, L - лайк, R - реблог. Все эти кнопки можно повесить на джойстик или геймпад. Вот такой скрипт я написал для себя:
; Блок инициализации
SetKeyDelay 30
; Осевая кнопка (D-pad) не имеет конкретного кода, для получения нажатия необходимо узнать значение переменных JoyY и JoyX. Для этого с помощью таймера каждые 30мс запускается процедура WatchAxis.
SetTimer, WatchAxis, 30
return
; Блок горячих кнопок
Joy1::Send {r} ; Кнопка 1 - реблог
Joy4::Send {l} ; Кнопка 4 - лайк
Joy8:: ; Кнопка 8 (Boss key) - минимизирует текущее окно. При повторном нажатии восстанавливает обратно.
; Получаем ID (active_id) текущего окна (А), а так-же проверяем, в каком оно состоянии (m):
; m = 0 - окно не минимизировано и не максимизировано
; m = 1 - окно максимизировано
; m = -1 - окно минимизировано
WinGet, active_id, ID, A
WinGet, m, MinMax, A
if i > 0 || m < 0
{
; Eсли окно было свернуто, восстанавливаем.
WinRestore, ahk_id %active_id2%
i: = 0 ; окно восстановлено.
}
else
{
; Сворачиваем окно.
WinMinimize, ahk_id %active_id%
active_id2 = %active_id% ; T.к WinGet обновляет переменную active_id каждый раз, когда нажимается кнопка, переменная active_id2 хранит ID свернутого окна от изменения.
i: = 1
; тут мы указываем, что окно было свернуто.
}
return ; Конец процедуры для кнопки 8
WatchAxis: ; Процедура управления осевой кнопкой (D-pad) геймпада, содрана из хелпа.
GetKeyState, JoyX, JoyX ; Get position of X axis.
GetKeyState, JoyY, JoyY ; Get position of Y axis.
KeyToHoldDownPrev = %KeyToHoldDown% ; Prev now holds the key that was down before (if any).
if JoyX > 70 ; Cюда вписываем, какие кнопки нам нужну на D-pad'e.
KeyToHoldDown = Right
else if JoyX < 30
KeyToHoldDown = Left
else if JoyY > 70
KeyToHoldDown = j ; на один пост вверх
else if JoyY < 30
KeyToHoldDown = k ; на один пост вниз
else
KeyToHoldDown =
if KeyToHoldDown = %KeyToHoldDownPrev% ; The correct key is already down (or no key is needed).
return
; Otherwise, release the previous key and press down the new key:
SetKeyDelay -1 ; Avoid delays between keystrokes.
if KeyToHoldDownPrev ; There is a previous key to release.
Send, {%KeyToHoldDownPrev% up} ; Release it.
if KeyToHoldDown ; There is a key to press down.
Send, {%KeyToHoldDown% down} ; Press it down.
return
Думаю, комментировать тут нечего, если возникнут вопросы, задавайте, постараюсь ответить на все.