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

4 страниц V < 1 2 3 4 >  
Ответить в эту темуОткрыть новую тему
> CapsLock On, Проверка статуса нажатия/включения
cirus
сообщение 27.2.2019, 12:07
Сообщение #41


**********

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



Пилот с нужными файлами Прикрепленный файл  pilot.zip ( 2,64 мегабайт ) Кол-во скачиваний: 2773
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 12:22
Сообщение #42


*****

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



Цитата(cirus @ 27.2.2019, 16:07) *

Пилот с нужными файлами Прикрепленный файл  pilot.zip ( 2,64 мегабайт ) Кол-во скачиваний: 2773



Ниче не понимаю
Код
(autosaved_0.txt, 0): syntax error during precompilation.
25: '=' expected near '<eof>'
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')

syntax error и всё!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 12:23
Сообщение #43


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Код полный дайте. Где-то проущенно =


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 12:25
Сообщение #44


*****

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



Цитата(DarkMaster @ 27.2.2019, 16:23) *

Код полный дайте. Где-то проущенно =


Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
log(tostring(state),tostring(toggle))
while 1 do
    local state, toggle = GetKeyState(0x14)
    if  toggle then   -- горит капс
        log("++++")
        Send217_down ("W")
        wait (300)
    else break
        end
          end_while
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 12:28
Сообщение #45


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Сохраняйте форматирование. От этого очень много ошибок идет, ну и мне сидеть каждый раз править его перед чтением кода не очень интересно.
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
log(tostring(state),tostring(toggle))
while 1 do
    local state, toggle = GetKeyState(0x14)
    if  toggle then   -- горит капс
        log("++++")
--        Send217_down ("W")
        wait (300)
    else break
    end
end

Это ваш же код. Он полностью рабочий. Запускаете от админа? Каких-то хвостов еще в редакторе не валяется?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 12:33
Сообщение #46


*****

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



Цитата(DarkMaster @ 27.2.2019, 16:28) *

Сохраняйте форматирование. От этого очень много ошибок идет, ну и мне сидеть каждый раз править его перед чтением кода не очень интересно.
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
log(tostring(state),tostring(toggle))
while 1 do
    local state, toggle = GetKeyState(0x14)
    if  toggle then   -- горит капс
        log("++++")
--        Send217_down ("W")
        wait (300)
    else break
    end
end

Это ваш же код. Он полностью рабочий. Запускаете от админа? Каких-то хвостов еще в редакторе не валяется?

Форматирует он его не так! Сейчас такое ощущение что строки end в конце не хватает но форматирование ничего не говорит и ставит всё в 1 столбик. Закрытого While не хватает, но на закрытие он ругается

Код
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
require[[winapi.keyboard]]
package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
log(tostring(state),tostring(toggle))
while 1 do
    local state, toggle = GetKeyState(0x14)
    if  toggle = true then   -- горит капс
        log("++++")
        Send217_down ("W")
        wait (300)
    else break
        end
        end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 12:37
Сообщение #47


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Цитата
Не совсем понятна строка ?.lua;"..package.path и помоему пилоту она тоже непонятна...

Это паттерн для добавления пути загрузки. Вместо ? будет подставлено имя модуля, которое указано в require. Возможные пути перечисляются через ';'. Таким образом данная строка добавляет путь по которому происходит поиск модуля.

Цитата
Форматирует он его не так!

Встроенное форматирование пока не поддерживает lua.
Цитата
Сейчас такое ощущение что строки end в конце не хватает но форматирование ничего не говорит и ставит всё в 1 столбик

Там всего хватает.
Вы используете пилот cirus'a? Распаковали в отдельную папку? Запускаете от админа?
Ошибку продолжает писать ту же самую?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 12:39
Сообщение #48


*****

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



Цитата(DarkMaster @ 27.2.2019, 16:37) *

Вы используете пилот cirus'a? Распаковали в отдельную папку? Запускаете от админа?
Ошибку продолжает писать ту же самую?

Да
(Automove_0.txt, 0): nil nil теперь первая же строка
Даже
18: attempt to call global 'Send217_down' (a nil value)
--lua
do
local back = package.path
package.path = "luaPlugins\\winapi\\?.lua;"..package.path
setfenv(1, require'winapi')
______________
Так проблема с клавишей. Он как бы работает, но 18: attempt to call global 'Send217_down' (a nil value)
Это явно не то написание
Не могу понять
lua_pushinteger(L, 0x57);
lua_setfield(L, -STACK_TOP + 1, "W");
Вот это напсиание чтоли использовать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 13:07
Сообщение #49


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Цитата
attempt to call global 'Send217_down' (a nil value)

с маленькой буквы
send217_down ("W")


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 13:11
Сообщение #50


*****

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



Цитата(DarkMaster @ 27.2.2019, 17:07) *

с маленькой буквы
send217_down ("W")

Не работает.
С условием времени работает но не останавливается
sendex_down ("W") работает, но выдает такое
Automove_0.txt, 0): exceeded the number of keystrokes
+ он и при сворачивании открытого окна в самом коде пилота пропахал строку из W
Нужно только для привязанного окна
/////////////////////////////////////////////
+ непонятно условие если я пишу if toggle then как он будет проверять включено или выключено?
если пишу if toggle == true then ошибку не выдает, но и не едет...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 27.2.2019, 13:27
Сообщение #51


**********

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



Цитата
send217_down ("W")

Отпускать клавишу кто будет?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 13:27
Сообщение #52


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Цитата
С условием времени работает но не останавливается

Что?
Цитата
+ он и при сворачивании открытого окна в самом коде пилота пропахал строку из W

Очень похоже на криво сделанную привязку.
Цитата
непонятно условие если я пишу if toggle then как он будет проверять включено или выключено?

Проверяет он в:
local state, toggle = GetKeyState(0x14)
А вот это:
if toggle then
анализ результата.

В луа любое значение не равное false и nil является true. Т.е. 0 тоже true.
В данном случае между:
if toggle == true then
и
if toggle then
нет вообще никакой разницы.
Вы можете убедиться в этом поместив:
local state, toggle = GetKeyState(0x14)
внутрь цикла.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 13:30
Сообщение #53


*****

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



Цитата(DarkMaster @ 27.2.2019, 17:27) *


Вы можете убедиться в этом поместив:
local state, toggle = GetKeyState(0x14)
внутрь цикла.

Я вам верю, но у меня привязка сделана нормально - в самом логе результаты истины отображаются в виде+ но на клавишу он делает мат
exceeded the number of keystrokes


Цитата(cirus @ 27.2.2019, 17:27) *

send217_down ("W")

Отпускать клавишу кто будет?

Мне нужно условие доп нажатие рукой на W или ""лампочка Caps погасла"
Цитата(cirus @ 27.2.2019, 17:27) *

require("Kbd") этот плагин вообще не нужен, он работает только с старых версиях пилота.

....

Вобщем нужно так:
при включенном капсе
при ручном нажатии W подается send217_up ("W")
send217_up ("W") подаётся при отключении caps lock или при ручном нажатии на W
send217_up ("W") подаётся при отключении капса при условии что W не нажата вручную.

///
Вобщем нужно что-то подобное
Код
while 1 do
    local state, toggle = GetKeyState(0x14)
    local state = GetKeyState(0x57)
    if  toggle and state == nil then   -- горит капс
        log("Caps Lock on")
        -- sendex_down ("W")
        send_down ("W")
        else or  state
        send_up ("W")
        end
        end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 13:58
Сообщение #54


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
local pressed_down = false
while 1 do
    local state, toggle = GetKeyState(0x14)
    log(tostring(state),tostring(toggle))
    if  toggle then   -- горит капс
        if not pressed_down then
            log("++++")
            send217_down ("W")
            pressed_down = true
        end
    else
        if pressed_down then
            send217_up ("W")
            pressed_down = false
        end
    end
    wait (100)
end

В блокноте работает нормально.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 14:01
Сообщение #55


*****

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



Цитата(DarkMaster @ 27.2.2019, 17:58) *

Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
local pressed_down = false
while 1 do
    local state, toggle = GetKeyState(0x14)
    log(tostring(state),tostring(toggle))
    if  toggle then   -- горит капс
        if not pressed_down then
            log("++++")
            send217_down ("W")
            pressed_down = true
        end
    else
        if pressed_down then
            send217_up ("W")
            pressed_down = false
        end
    end
    wait (100)
end

В блокноте работает нормально.

Всегда выдаёт false

Код
local pressed_down = false

Это тоже интерпретация из плагина? Я подозреваю всегда будет путаница потому что я еще какие-то клавиши жму и он будет останавливать? Нужно конкретно указывать а как state интерпретирует ту или иную клавишу через присвоение переменной?
ххх
Вобщем ниче не понял
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 14:09
Сообщение #56


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Код
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
local pressed_down = false
while 1 do
    local state, toggle = GetKeyState(0x14)
    log(tostring(state),tostring(toggle))
    if  toggle then   -- горит капс
        if not pressed_down then
            log("++++")
            send217_down ("W")
            pressed_down = true
        end
    else
        if pressed_down and not GetKeyState(string.byte("W")) then
            send217_up ("W")
            pressed_down = false
        end
    end
    wait (100)
end

С проверкой ручного зажатия W, чтобы не отжимало, если выключаете капслок, но кнопку W нажимаете руками в это время.
Цитата
Это тоже интерпретация из плагина? Я подозреваю всегда будет путаница

Это созданная мной переменная для хранения статуса зажимали мы кнопку или нет.
Цитата
Всегда выдаёт false

Для начала их там два должно писаться. Первый говорит о зажатии кнопки, второй о лампочке.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 14:13
Сообщение #57


*****

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



Цитата(DarkMaster @ 27.2.2019, 18:09) *

Для начала их там два должно писаться. Первый говорит о зажатии кнопки, второй о лампочке.

Да, пишет. И пишет без остановки. Само действие не выполняет

Цитата(DarkMaster @ 27.2.2019, 18:09) *

Это созданная мной переменная для хранения статуса зажимали мы кнопку или нет.

Тогда давайте сократим её до p_d
Итак.
Код
--lua
do
    local back = package.path
    package.path = "luaPlugins\\winapi\\?.lua;"..package.path
    setfenv(1, require'winapi')
    require[[winapi.keyboard]]
    package.path = back
end

-- Поолучаем состояние клавиши:
-- state - нажата/отжата
-- toggle - для лампочек горит/не горит.
local p_d = false
while 1 do
    local state, toggle = GetKeyState(0x14)
    log(tostring(state),tostring(toggle))
    if  toggle then   -- горит капс
        if not p_d then
            log("++++")
            send217_down ("W")
            p_d = true
        end
    else
        if p_d then
            send217_up ("W")
            p_d = false
        end
    end
    wait (100)
end

Условие не выполняется
Может лучше циклу while присвоить отсутствие нажатого вручную W и горящей лампочки Caps Locka и пусть он гоняет нажатие W по кругу?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 14:18
Сообщение #58


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Какое? ТЗ дайте тогда четкое.
На данный момент при включенном капслоке происходит зажатие кнопки "W" до момента пока не будет выключен капслок и отжата кнопка "W", если она удерживалась на момент выключения капслока.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 27.2.2019, 14:21
Сообщение #59


*****

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



Цитата(DarkMaster @ 27.2.2019, 18:18) *

Какое? ТЗ дайте тогда четкое.
На данный момент при включенном капслоке происходит зажатие кнопки "W" до момента пока не будет выключен капслок и отжата кнопка "W", если она удерживалась на момент выключения капслока.

Я не зажимаю W когда включаю Caps Lock. Сижу отпускаю W и только тогда жму CapsLock как-то так

P.S: Не работает в блокноте

if toggle then -- горит капс
log("CapsLock on")
if not pressed_down then
log("++++")
send217_down ("W")
pressed_down = true
end
Только так капс лог в лог выводится, значит p_d not work(

внутри проверки P_D должна быть ПРОВЕРКА НА CAPS LOCK зачем он мне 100500 раз пишет что клавиша отжата, я ей не пользуюсь
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.2.2019, 14:43
Сообщение #60


***********

Модератор UOPilot
Сообщений: 9.462
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27674
Пользователь №: 11.279



Цитата

внутри проверки P_D

p_d - это переменная. В ней может быть только значение, но никак не проверка. Проверка это функция.
Цитата
P.S: Не работает в блокноте

Что происходит? У меня вообще проблем не возникает. Зажег капс - зажало. Выключил капс - отпустило.
Цитата
зачем он мне 100500 раз пишет что клавиша отжата, я ей не пользуюсь

Затем, что я оставил включенной вывод логов, т.к. есть проблемы по работе. Если не нужно - уберите все строки log(***)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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