Страница 1 из 2
					
				Имитация нажатия клавиши
				Добавлено: 10 Июль 2017, 10:08
				 gopstop2007
				Для планшета сделал свою клавиатуру (MK) для поиска товара через локатор, при нажатии моих клавиш на MK с англ. символов все ясно через presskey(), а как быть с имитацией нажатием на МК не с англ. символами (например - русскими)?
			 
			
					
				Имитация нажатия клавиши
				Добавлено: 10 Июль 2017, 13:24
				 Admin
				Переключись в русскую раскладку принудительно и отправляй код кнопки на которой русская буква написана.
Вот сборная солянка с форума.
Код: Выделить всё
         PROGRAM
HKL      EQUATE(UNSIGNED)
Latin    CSTRING('00000409')
Russian  CSTRING('00000419')
loc:Text STRING(200)  
         INCLUDE('KEYCODES.CLW')
         MAP
           module('')
             GetKeyboardLayout(DWORD),HKL,pascal
             GetKeyboardLayoutNameA(*CSTRING),BOOL,pascal,raw
             ActivateKeyboardLayout(HKL,UNSIGNED),HKL,pascal
           END
           SwitchKBD(STRING KBDLayout)
         END
  
Window WINDOW('Russian presskey'),AT(,,299,124),GRAY,FONT('Microsoft Sans Serif',8,,, |
      CHARSET:CYRILLIC)
    TEXT,AT(3,2,293,100),USE(loc:Text)
    BUTTON('Русский'),AT(2,107),USE(?Rus)
    BUTTON('Английский'),AT(45,107),USE(?Eng)
  END
  CODE
  OPEN(Window)
  ACCEPT
    CASE ACCEPTED()
    OF ?Rus
      SwitchKBD(Russian)
      SELECT(?loc:Text)
      PRESSKEY(AKey)
      PRESSKEY(BKey)
      PRESSKEY(CKey)
    OF ?Eng
      SwitchKBD(Latin)
      SELECT(?loc:Text)
      PRESSKEY(AKey)
      PRESSKEY(BKey)
      PRESSKEY(CKey)
    END
  END  
  CLOSE(Window)
SwitchKBD   Procedure(STRING KBDLayout)
AKL         HKL
TMP         CSTRING(20)
loc:i       Long
  Code
  loc:i = GetKeyboardLayoutNameA(Tmp)
  if Tmp<>KBDLayout
    AKL = ActivateKeyBoardLayout(1,0)
  end  
 
			
					
				Имитация нажатия клавиши
				Добавлено: 10 Июль 2017, 13:37
				 gopstop2007
				Спасибо, Admin.
А то я по старинке через API keybd_event(Key,0,0,0) + раскладка LoadKeyboardLayout(), ждал другое решение. 

 
			
					
				Имитация нажатия клавиши
				Добавлено: 11 Июль 2017, 8:36
				 kreator
				Я только не понял - зачем нужна имитация? И чем не устраивает стандартная клавиатура?
			 
			
					
				Имитация нажатия клавиши
				Добавлено: 11 Июль 2017, 13:07
				 gopstop2007
				kreator писал(а): 11 Июль 2017, 8:36Я только не понял - зачем нужна имитация? И чем не устраивает стандартная клавиатура?
 
Более рациональное расположение клавиш, убрано лишнее и терминальный сервер как правило с двумя раскладками языка, а если надо больше, то зачем на сервер навешивать. Плюс можно рассчитать рабочую поверхность, без клавиатуры, которая в зависимости от размера экрана может что -то закрыть и прочее...
 
			
					
				Имитация нажатия клавиши
				Добавлено: 12 Июль 2017, 8:11
				 gopstop2007
				Проблема. При нажатии 123 на виртуал. клавиатуре (выше указанной) в ЧИСЛОВОЕ (LONG) поле, результатом будет только последнее число 3. Идет перезапись нажатых чисел, если использовать обычную клавиатуру таких проблем нет.  

 
			
					
				Имитация нажатия клавиши
				Добавлено: 12 Июль 2017, 8:44
				 Admin
				В моем примере сделал поле @N10 с LONG переменной и не увидел проблемы. Все записалось как нужно.
Твоего кода - не видим 
 
При SELECT(?var) все введенное же выделяется.
Может SELECT(?var) несколько раз делаешь и соответственно перезаписываешь только что введенные цифры?
Так попробовать:
Код: Выделить всё
  SELECT(?LOC:Long)
  PRESSKEY(RightKey)
  PRESSKEY(Key1)
  PRESSKEY(Key2)
  PRESSKEY(Key3)
 
			
					
				Имитация нажатия клавиши
				Добавлено: 12 Июль 2017, 9:01
				 gopstop2007
				Admin писал(а): 12 Июль 2017, 8:44
...
При SELECT(?var) все введенное же выделяется.
...
Так попробовать:
  PRESSKEY(RightKey)
 
SELECT(?var) - у меня не работает
  PRESSKEY(RightKey) - все заработало! 

 
			
					
				Имитация нажатия клавиши
				Добавлено: 12 Июль 2017, 16:37
				 kreator
				gopstop2007 писал(а): 11 Июль 2017, 13:07
Более рациональное расположение клавиш, убрано лишнее и терминальный сервер как правило с двумя раскладками языка, а если надо больше, то зачем на сервер навешивать. Плюс можно рассчитать рабочую поверхность, без клавиатуры, которая в зависимости от размера экрана может что -то закрыть и прочее...
 
По сравнению с сенсорной клавиатурой Винды? Тогда молчу. А подсказки слов при наборе букв есть?
 
			
					
				Имитация нажатия клавиши
				Добавлено: 12 Июль 2017, 16:54
				 gopstop2007
				kreator писал(а): 12 Июль 2017, 16:37
По сравнению с сенсорной клавиатурой Винды? Тогда молчу. А подсказки слов при наборе букв есть?
 
kreator, я рад всем вашим замечаниям, опыта в кларион с планшетом ноль. Вот такой вид на данном этапе 

а какую клавиатуру используете? вызов через клашу  с помощью osk (EnhancedFocusManager.SetOnScreenKeyboard) или что-то другое?
 
			
					
				Имитация нажатия клавиши
				Добавлено: 12 Июль 2017, 18:29
				 kreator
				Ну да, стандартную. Класс SV чуть подправил. Сделал глобальную настройку на вызов сенсорной клавиатуры ("не вызывать никогда", "вызывать" и "вызывать и автоматически скрывать", последний режим не реализован у SV совсем, спасибо Игорю Столярову, он подсказал как убирать клаву). На данный момент нет отдельной версии для планшета. Есть спец-модуль. В принципе пользователь сам решает как ему использовать сенсорную клавиатуру. Потому что пользователи могут запустить обычный (не мобильный) модуль и использовать обычную "железячную" клаву, идущую в комплекте с планшетом. Для полноценной работы с специальным мобильным модулем, естественно, советуем включать третий режим. Кстати, SV обещала сделать автоматический сдвиг контролов при работе с сенсорной клавиатурой, если она перекрывает контролы для ввода. Ну это так, мало ли чего обещают, пять лет не дождёшься.
Есть ещё проблема - отображение подсказок слов (почему я и спрашиваю об этом). Проблема мне вообще не понятна. MS включила эту возможность в последнем релизе. У майкрософтовских программ эта фича работает. Больше нигде не работает. Ладно, я дурак. А остальные? На форуме Майкрософта мне не помогли. На sql.ru тоже. Очередной пипец. Поэтому я и говорю, что iOS - наше всё. Подсказки работают во всех программах через стандартную клаву, там же есть голосовой ввод. Эх-х...
			 
			
					
				Имитация нажатия клавиши
				Добавлено: 13 Сентябрь 2017, 12:39
				 gopstop2007
				Освободился решил доделать, 
При поиске все работает идеально, но возникли проблемы, если вышеуказанную клавиатуру использовать в числовых полях, например количество, цена
Использую
Код: Выделить всё
PRESSKEY(RightKey)  ! перемещаем вправо для введение следующего числа
PRESSKEY(Key1)
при удалении последнего введенного символа в 
числовом поле
при нажатии клавиши Backspace 
поведение неадекватное 

не говорю про ввод в поле использующее числовые значения с десятичными значениями (цена)
есть ли у кого то примерчик, чтобы полностью имитировал нажатие стандартных клавиш без использования PRESSKEY()?
 
			
					
				Имитация нажатия клавиши
				Добавлено: 13 Сентябрь 2017, 14:14
				 kreator
				Ну попробуй функцию press ещё. Может всё-таки стандартную подключить?
			 
			
					
				Имитация нажатия клавиши
				Добавлено: 13 Сентябрь 2017, 16:02
				 gopstop2007
				kreator писал(а): 13 Сентябрь 2017, 14:14
Ну попробуй функцию press ещё. Может всё-таки стандартную подключить?
 
спасибо насчет press упустил, насчет стандартной я не против, баба с возу кобыле легче, клиент считает по другому 

 
			
					
				Имитация нажатия клавиши
				Добавлено: 13 Сентябрь 2017, 20:11
				 kreator
				gopstop2007 писал(а): 13 Сентябрь 2017, 16:02
насчет стандартной я не против, баба с возу кобыле легче, клиент считает по другому
 
Как понять? Клиент хочет именно "свою" клавиатуру? Или чем-то стандартная не устраивает?