Привязка кнопок

Страницы: 1
RSS
Привязка кнопок
 
Подскажите функцию как привязать в скрипте например кнопку  1 на клавиатуре .
Буду очень Благодарен!  8)
 
Здравствуйте,
Имеющимися средствами QLua можно отслеживать нажатия клавиш только на таблицах порожденных LUA скриптом через SetTableNotificationCallback.
Если речь идет об отслеживании нажатий клавиш в основном окне терминала или в операционной системе Windows то это только сторонними средствами на Ваш страх и риск.
 
В основном окне терминала .
На пример если я нажму клавишу 1 на клавиатуре то мне скрипт запущенный в квике выдаст сообщение "Привет!"
 
Цитата
Сергей пишет:
В основном окне терминала .
На пример если я нажму клавишу 1 на клавиатуре то мне скрипт запущенный в квике выдаст сообщение "Привет!"
тогда только сторонними средствами
 
А как же:


function f_cb(t_id,msg,par1,par2) --событие на нажатие клавиш
  if (msg==QTABLE_CHAR) and (par2==19) then --сохранить в CSV файл текущее состояние таблицы нужно нажать комбинацию клавиш Ctrl+S
     CSV(t_id)
  end
  if (msg==QTABLE_CLOSE) then --закрытие окна
     Stop()
  end
end



вот только не пойму как свои клавиши указать и как ее использовать
 
Эта функция внутри функции main()
код клавиши A=1
Пробую так не работает

if msg==QTABLE_CHAR  and par2== 1 then
message('Привет. - ',2)
end
 
Цитата
Сергей пишет:
Пробую так не работает
Сергей,
Еще раз, имеющимися средствами QLua можно отслеживать нажатия клавиш только на таблицах порожденных LUA
То есть это работает только если есть LUA таблица и если окно с ней активно.
Если окно не активно то не работает.
Если LUA таблицы вообще нет, то не работает.
Тот способ который Вы приводите это и есть тот самый о котором я говорю.
Колбек задается функцией SetTableNotificationCallback
 
Цитата
Sergey Gorokhov пишет:
Колбек задается функцией SetTableNotificationCallback
Спасибо Сергей!!
Примерчик не большой подскажете как использовать? SetTableNotificationCallback
 
Код
local bRun, hID = true

local _Callback = function(t_id, msg, par1, par2)
  if msg == QTABLE_CLOSE then bRun = nil
  elseif msg == QTABLE_CHAR then
    SetCell(hID, 1, 1, GetCell(hID, 1, 1).image..string.char(par2))
  end
end

function main()
  hID = AllocTable()
  AddColumn(hID, 1, 'Введите тект:', true, QTABLE_STRING_TYPE, 32)
  CreateWindow(hID)
  SetWindowPos(hID, 600, 300, 200, 60)
  SetTableNotificationCallback(hID, _Callback)
  SetWindowCaption(hID, "Окно ввода текста")
  InsertRow(hID, -1)
  while bRun do sleep(100) end
end

function OnStop()
  bRun = nil
end
Надо делать так, как надо. А как не надо - делать не надо.
 
Спасибо!! Старатель! :D
 
Цитата
Сергей пишет:
function f_cb(t_id,msg,par1,par2) --событие на нажатие клавиш
if (msg==QTABLE_CHAR) and (par2==19) then --сохранить в CSV файл текущее состояние таблицы нужно нажать комбинацию клавиш Ctrl+S
CSV(t_id)
end
if (msg==QTABLE_CLOSE) then --закрытие окна
Stop()
end
end
А где вы взяли этот кусок кода?
Надо делать так, как надо. А как не надо - делать не надо.
 
Здесь на форуме!
вот ссылка:
https://forum.quik.ru/messages/forum10/message7210/topic748/#message7210
:D
 
Мне вот приспичило CTRL-S ловить в таблице. Оказывается никак! CTRL генерит код VKEY 17  и всё. Нажатие "S" или "s" при нажатом CTRL ничего не генерит. А если CTRL нажать и не отпускать, то будет несколько сгенерённых VKEY равных 17. А так хотелось именно на CTRL-S отклик.
 
Потому что надо не контрол ловить а целевую букву - S
А когда поймали - проверять, нажат ли контрол/альт/шифт.
 
Цитата
Kalmar написал:
Потому что надо не контрол ловить а целевую букву - S
А когда поймали - проверять, нажат ли контрол/альт/шифт.
Спасибо за подсказку. Надо будет попробовать.
 
Цитата
Kalmar написал:
А когда поймали - проверять, нажат ли контрол/альт/шифт
Так, погоди... Смотри... Если я как обычно жму CTRL-S, ну т.е. сначала зажимаю CTRL и при нажатом CTRL нажимаю "S", то QTABLE_CHAR не приходит вообще! Приходит только QTABLE_VKEY у кторого msg == 17. И всё! Как мне средствами Lua словить CTRL-S?
 
Цитата
Alexander написал:
Цитата
Kalmar написал:
А когда поймали - проверять, нажат ли контрол/альт/шифт
Так, погоди... Смотри... Если я как обычно жму CTRL-S, ну т.е. сначала зажимаю CTRL и при нажатом CTRL нажимаю "S", то QTABLE_CHAR не приходит вообще! Приходит только QTABLE_VKEY у кторого msg == 17. И всё! Как мне средствами Lua словить CTRL-S?
Поправлю, приходит только QTABLE_VKEY у кторого par2 == 17
 
Если кто делал такое штатными средствами QLua - через CTRL-S, отпишите. Ну и какой смысл вообще от виртуальной клавиши? Если она генерила бы специфический код на комбинации клавиш, тогда ещё ладно. А так, какой с неё прок?
Страницы: 1
Читают тему
Наверх