Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Аналог
Levo222
сообщение 4.8.2019, 23:46
Сообщение #1


****

Apprentice
Сообщений: 191
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 35
Пользователь №: 18.689



Помогите составить аналог на Lua замены клавиш в запущенной программе
Есть вот такой на AHK но там много других заморочек, другой синтаксис и много других причин по которым на AHK я сидеть не хочу

1
Код
#SingleInstance force
#InstallKeybdHook
#InstallMouseHook
#NoEnv
SendMode InputThenPlay

SetTimer, wr
return

wr:
WinGet, pname, ProcessName, A
if pname = Programma.exe
{
suspend, off
}
else
{
suspend, on
}
return

;сам биндинг клавиш

Enter::p
MButton::o
XButton1::i

Смысл такой
Цитата
создаёт хук клавиатуры и мышки, заставляя ловить на лету нажатия нужных клавиш (только тех, которые используются в скрипте) и передавать их программе уже как другие клавиши.
переназначение клавиш будет включаться через 2.5 секунды после входа в игру и выключаться через 2.5 сек после выхода.


Как можно сделать на Lua аналог?


ну а я начну с уже известного мне

2
Код
--lua
--Включение(Num_Lock)
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end
wait (1)
local state, toggle = GetKeyState(0x90)
local stateC = GetKeyState(0x43)
local state5 = GetKeyState(0x35)
local stateV = GetKeyState(0x56)
local state1 = GetKeyState(0x31)
local stateZ = GetKeyState(0x5A)
local stateR = GetKeyState(0x52)
local state3 = GetKeyState(0x33)
local stateB = GetKeyState(0x42)
local state2 = GetKeyState(0x32)
local stateF = GetKeyState(0x46)
local stateX = GetKeyState(0x58)
local stateH = GetKeyState(0x48)
local stateG = GetKeyState(0x47)
local stateM = GetKeyState(0xC0)
local state4 = GetKeyState(0x34)
local stateT = GetKeyState(0x54)
if  toggle and stateC then
    wait (1)
    send217 ("g")
else
    if  toggle and stateC then
        wait (1)
        send217 ("u")
    else
        if  toggle and state5 then
            wait (1)
            end
            end
            end

Что-то в таком виде хотелось бы иметь + модификаторы, которые бы работали как отдельно так и в сочетаниях

конечно безусловно я могу написать замену клавиш через этот скрипт. Но тут встаёт вопрос с модификаторами и их сочетаниями, которых великое множество, даже в том же AHK у меня не получается отделить клавишу с зажатым модификатором от модификатора и модификатора с другой клавишей и он просто не работает, возможно там нужны команды посложнее ( :: ) а писать каждую клавишу / если - то /
чего на незнакомом языке вообще делать не хочется
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 5.8.2019, 6:03
Сообщение #2


****

Apprentice
Сообщений: 191
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 35
Пользователь №: 18.689



+ небольшая проблема на этапе написания клавиши "-" на нумпаде, её не различает приложение от эмуляторов нажатия
по типу
Код
if  toggle
                    then
                    sendex("-") --Нужен именно "-" на Num_Pad клавиатуре
                    wait (1)
                else
                    end

ни send217/send и прочее также не работают
В блокноте и прочем работают, но я сомневаюсь что там отсылается именно тот "-", какой у него код в 10-ричной системе?

что через AHK что через Пилот если пишешь нажать "-" ноль внимания
как это решить?

local stateM = GetKeyState(0x6D)
Определять он её определяет, но вот нажимать не нажимает. Собственно вопрос как будет нажать клавишу с определённым кодом?

-- короче это не 6D, и в кодах клавиш она как Subtract
Код
VK_SUBTRACT     6D     Subtract key (-)

клавиша вычитания обозначается, на клаве её определяет как J но сама J - не вызывает
В AHK это прописывается буквенным обозначением - NumpadSub, хз как её там ловят.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 5.8.2019, 10:27
Сообщение #3


**********

Elder
Сообщений: 2.606
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 16187
Пользователь №: 16.971
Возраст: 29



Цитата
как будет нажать клавишу с определённым кодом?

Код
send {0x6D}
end_script
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 24.8.2019, 10:49
Designed by Nickostyle