Перенаправление кнопок клавиатуры

Что работает или не работает с WTware.
Ответить
akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Перенаправление кнопок клавиатуры

Сообщение akaplenko » Ср авг 30, 2017 2:27 pm

Добрый день!

Мы используем тонкие клиенты на складе. К клиентам подключен блок клавиатуры, на котором есть только NumPad кнопки. Пока мы работали на нашем программном обеспечении все было хорошо, но с какого то времени часть терминальных клиентов мы переводим на 1С. И в процессе этого перевода столкнулись со некоторыми сложностями.

Клиент 1С иногда требует сервисных операций, для которых недостаточно кнопок на цифровой клавиатуре. Для решения этого вопроса они используют сочетания кнопок [NumPad +] и цифровые кнопки ([1], [2] b т.д.), но чтобы оно работало они на виндовых машинах (с которых раньше ходили на терминальный сервер) специальным параметром реестра "ремапили" клавишу [NumPad +] на клавишу [Ctrl]. Вот параметр для ремапинга:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,4e,00,00,00,00,00

Таким образом получалось что когда пользователь нажимает [NumPad+]+[1], то 1С воспринимает это как комбинацию клавиш [Ctrl]+[1] и запускает необходимую обработку.

Однако на терминальном сервере такой фокус работает только непосредственно для консоли самого сервера. В процессе поиска решения мы нашли программное обеспечение (http://www.kbdedit.com), которое позволяет создать раскладку клавиатуры с измененными кнопками и инсталлировать его на сервер. Создали раскладку с замененным [NumPad +] на клавишу [Ctrl], установили ее на сервер и при проведении испытаний вроде бы все работало, но мы нашли одну странность.

При нажатии комбинации кнопок [NumPad+]+[C] (в оригинале Ctrl+C) все работает. Так же работают все комбинации клавиш [NumPad+] + [любая кнопка основной клавиатуры], они правильно интерпретируются и срабатывает все нужное (вставка из буфера, сохранение файлов и т.д.). Но как только мы пробуем сделать комбинацию клавиш [NumPad +] + [любая цифра на NumPad] (тот самый [Ctrl]+[1]) все ломается. Оно как будто не видит что нажат [Ctrl] и просто выдает одну цифру.

Все тоже самое, при терминале RDP, запущенном на последнем Windows или последнем linux c freerdp работает корректно. Я наблюдаю проблему только при подключении к серверу с wtware и тоже самое происходит у меня при подключении к терминальному серверу через MacOS и стандартный клиент Microsoft.

Поможете разобраться? А то мы уже все перепробовали и не растет кокос. Могу дать доступ к серверу с установленной клавиатурной раскладкой.

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Ср авг 30, 2017 3:24 pm

akaplenko писал(а):Могу дать доступ к серверу с установленной клавиатурной раскладкой.
Лучше объясни, на накакую кнопку нажать чтобы у меня появился свой сервер с установленной клавиатурной раскладкой.

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Ср авг 30, 2017 3:36 pm

aka писал(а):
akaplenko писал(а):Могу дать доступ к серверу с установленной клавиатурной раскладкой.
Лучше объясни, на накакую кнопку нажать чтобы у меня появился свой сервер с установленной клавиатурной раскладкой.
Там софт, который это делает платный. Он создает вот такой инсталлятор - http://wmslab.ru/KbdEditInstallerUS-thinbox-npad.exe, если его запустить на сервере, он поставит раскладку.
Вложения
Снимок-экрана-2017-08-30-в-15.36.59.png
Снимок-экрана-2017-08-30-в-15.36.59.png (37.4 КБ) 1216 просмотров

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Вс сен 03, 2017 12:03 am

удалось попробовать? :roll:

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Вс сен 03, 2017 12:32 am

Нет ещё. Суеты много :( Попробую обязательно, но немного попозже...

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Вс сен 03, 2017 10:23 am

Хорошо, будем ждать. Пока видимо придется собирать альтернативный вариант на freerdp

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Вт сен 05, 2017 11:38 am

А примерно когда сможете посмотреть не подскажете? А то чет не растет у нас кокос с freerdp :-)

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Вт сен 05, 2017 5:23 pm

Взял 2012R2 английский сервер.

Поставил на него вашу штуку. Перегрузил. Язык в панрель добавился:
Untitled.png
Untitled.png (9.54 КБ) 1131 просмотр
Подключаюсь через mstsc.exe с автоапдейтящейся Windows 10.

Запускаю FAR. Ctrl-1, Ctrl-2, Ctrl-3 - меняют режим панели.

Включаю этот ваш новый язык.

Включаю NumLock.

Нажимаю + на цифровой клавиатуре, держу. Нажимаю 1 на цифровой клавиатуре.

Фар делает что-то странное: вставляет имя текущего файла в командную строку (как с Ctrl-Enter), но вставленное имя файла оно при этом выделенное. Т.е. ваша клавиатура определённо что-то делает, в нормальной жизни Far при нажатии на + на цифровой клавиатуре сразу рисует окошко выделения файлов. Но это совсам не Ctrl-1.

Что я делаю не так?

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Вт сен 05, 2017 10:46 pm

https://youtu.be/mgRj86S3YCk

Вот на видео попытался продемонстрировать это на горячих кнопках фара. Вроде должно быть понятно.

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Ср сен 06, 2017 9:35 pm

Ага, +8 и +2 работают как на видео. И не работают тоже как на видео. Буду копать.

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Чт сен 07, 2017 3:30 pm

Причем +C, +V, +S и все кнопки основной клавиатуры работают на wtware как надо. Не работает только комбинация +(кнопки numpada).


aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Вт сен 12, 2017 5:00 pm

Это был специальный костылик для цифровых клавиш. Перед каждым нажатием цифровой клавиши втварь слала сообщение о синхронизации. Костылик гарантировал, что лампочка намлока всегда будет синхронизирована с действиями клавиш. Без него синхронность намлока обеспечивает россыпь куда менее надежных костылей. Попробую отключить, но если начнут жаловаться, возможно придется вернуть назад...

Попробуй: http://pxe.ru/files/testing/201709121757.zip

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Ср сен 13, 2017 1:31 pm

ой, спасибо огромное! На стенде все работает! Завтра поставлю на склад и проверю массово.

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Пн сен 18, 2017 12:20 pm

На складе все тоже работает! Спасибо! Просьба держать в курсе если вдруг будете опять включать "костылик" :)

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Чт окт 05, 2017 12:41 pm

А вот еще вопрос. В конфигурационном файле есть параметр:
keyboard = en-us-int

Откуда берется "en-us-int". Как посмотреть такой код для моей раскладки?

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Пт окт 06, 2017 7:14 am

Полный список возможных значений есть в конфигураторе.

en-us-int это 0x00020409, список здесь: https://technet.microsoft.com/en-us/lib ... S.10).aspx

Где найти вашу - понятия не имею., наверное где-то в реестре машины, на которой оно установлено. И если найдешь, придётся ещё втварь научить приинмать численное значение...

Значение отдается серверу в поле keyboardLayout здесь: https://msdn.microsoft.com/en-us/library/cc240510.aspx

И интересное в сноске:
<5> Section 2.2.1.3.2: Microsoft RDP 7.1, 8.0, 8.1, 10.0, 10.1, and 10.2 RemoteFX servers ignore the keyboardLayout field.

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Пт окт 06, 2017 7:13 pm

aka писал(а): en-us-int это 0x00020409
Да, такой код для моей клавиатуры у меня есть - 0xb0080409
aka писал(а):И если найдешь, придётся ещё втварь научить приинмать численное значение...
Сложно?

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Пт окт 06, 2017 7:18 pm

If the keyboardLayout field is set to zero, then the server SHOULD use the default active input locale identifier and active language identifier (see the CodePage field in section 2.2.1.11.1.1) associated with the user account
По идее это тоже подошло бы, но оказалось огромный геморрой выставлять учеткам способы ввода по умолчанию. Языки есть, а вот если у тебя более одной клавиатуры на один язык, то указать пользователю нужную бывает очень сложно средствами Windows.

Есть еще параметр [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001

При его установке сервер по идее должен игнорировать закладку клиента в RDP сессии. Но почему то у нас не везде оно работает. Пока разбираемся.

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Пт окт 06, 2017 9:00 pm

http://pxe.ru/files/testing/201710062155.zip

Код: Выделить всё

keyboard = 0xb0060409
В конфигураторе работать пока не будет, надо прямо в текст конфига текстовым редактором вписать.

Но зачем??

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Сб окт 07, 2017 12:14 pm

А как еще назначить пользователю способ ввода по умолчанию? Мы много перепробовали. Почти идеально работает когда на одном сервере можно оставить только одну ракладку клавиатуры для языка и назначить ее по умолчанию новым пользователям. Текущим пользователям либо удалять профили, либо руками заходить и ставить. Плюс это все работает только с тем флагом рекстра, который я выше писал. Если его нет, то что не назначай по умолчанию пользователю при старте rbp сессии в ней будет или английский в случае wtware, либо русский/английский на rdp в windows в зависимости от текущей раскладки на винде.

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Пн окт 09, 2017 1:57 pm

aka писал(а):http://pxe.ru/files/testing/201710062155.zip

Код: Выделить всё

keyboard = 0xb0060409
В конфигураторе работать пока не будет, надо прямо в текст конфига текстовым редактором вписать.

Проверил, все работает! Спасибо!

aka
Разработчик
Разработчик
Сообщения: 9035
Зарегистрирован: Ср окт 01, 2003 12:06 am
Откуда: Роcсия, Тольятти
Контактная информация:

Re: Перенаправление кнопок клавиатуры

Сообщение aka » Пн окт 09, 2017 6:34 pm

Что работает? Что в документации про это написать?

akaplenko
Сообщения: 37
Зарегистрирован: Пн мар 13, 2017 5:30 pm

Re: Перенаправление кнопок клавиатуры

Сообщение akaplenko » Ср окт 11, 2017 12:31 am

Написать что-то вроде этого:

Кроме указанных в списке раскладок вы можете указать непосредственно код раскладки клавиатуры. В этом случае в конфигурационном файле необходимо указать строку вида:

Код: Выделить всё

keyboard = 0xb0060409
Все коды раскладок клавиатур установленных у вас на сервере вы можете посмотреть в ветке реестра:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts

Я не проверял, но должно работать по документации, проверю на днях:

Если указать

Код: Выделить всё

keyboard = 0x00000000
то сервер проигнорирует раскладку клиента и установит раскладку клавиатуры по умолчанию для текущего пользователя
[/i]

Так же можно установить на сервере ключ реестра:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001

При установленном ключе параметр keyboard конфигурационного файла будет игнорироваться и пользователю будет выставлена раскладка в соответствии с его профилем WIndows.

Ответить