Перенаправление кнопок клавиатуры
Перенаправление кнопок клавиатуры
Добрый день!
Мы используем тонкие клиенты на складе. К клиентам подключен блок клавиатуры, на котором есть только 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.
Поможете разобраться? А то мы уже все перепробовали и не растет кокос. Могу дать доступ к серверу с установленной клавиатурной раскладкой.
Мы используем тонкие клиенты на складе. К клиентам подключен блок клавиатуры, на котором есть только 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.
Поможете разобраться? А то мы уже все перепробовали и не растет кокос. Могу дать доступ к серверу с установленной клавиатурной раскладкой.
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Лучше объясни, на накакую кнопку нажать чтобы у меня появился свой сервер с установленной клавиатурной раскладкой.akaplenko писал(а):Могу дать доступ к серверу с установленной клавиатурной раскладкой.
Re: Перенаправление кнопок клавиатуры
Там софт, который это делает платный. Он создает вот такой инсталлятор - http://wmslab.ru/KbdEditInstallerUS-thinbox-npad.exe, если его запустить на сервере, он поставит раскладку.aka писал(а):Лучше объясни, на накакую кнопку нажать чтобы у меня появился свой сервер с установленной клавиатурной раскладкой.akaplenko писал(а):Могу дать доступ к серверу с установленной клавиатурной раскладкой.
- Вложения
-
- Снимок-экрана-2017-08-30-в-15.36.59.png (37.4 КБ) 43060 просмотров
Re: Перенаправление кнопок клавиатуры
удалось попробовать?
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Нет ещё. Суеты много Попробую обязательно, но немного попозже...
Re: Перенаправление кнопок клавиатуры
Хорошо, будем ждать. Пока видимо придется собирать альтернативный вариант на freerdp
Re: Перенаправление кнопок клавиатуры
А примерно когда сможете посмотреть не подскажете? А то чет не растет у нас кокос с freerdp
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Взял 2012R2 английский сервер.
Поставил на него вашу штуку. Перегрузил. Язык в панрель добавился: Подключаюсь через mstsc.exe с автоапдейтящейся Windows 10.
Запускаю FAR. Ctrl-1, Ctrl-2, Ctrl-3 - меняют режим панели.
Включаю этот ваш новый язык.
Включаю NumLock.
Нажимаю + на цифровой клавиатуре, держу. Нажимаю 1 на цифровой клавиатуре.
Фар делает что-то странное: вставляет имя текущего файла в командную строку (как с Ctrl-Enter), но вставленное имя файла оно при этом выделенное. Т.е. ваша клавиатура определённо что-то делает, в нормальной жизни Far при нажатии на + на цифровой клавиатуре сразу рисует окошко выделения файлов. Но это совсам не Ctrl-1.
Что я делаю не так?
Поставил на него вашу штуку. Перегрузил. Язык в панрель добавился: Подключаюсь через mstsc.exe с автоапдейтящейся Windows 10.
Запускаю FAR. Ctrl-1, Ctrl-2, Ctrl-3 - меняют режим панели.
Включаю этот ваш новый язык.
Включаю NumLock.
Нажимаю + на цифровой клавиатуре, держу. Нажимаю 1 на цифровой клавиатуре.
Фар делает что-то странное: вставляет имя текущего файла в командную строку (как с Ctrl-Enter), но вставленное имя файла оно при этом выделенное. Т.е. ваша клавиатура определённо что-то делает, в нормальной жизни Far при нажатии на + на цифровой клавиатуре сразу рисует окошко выделения файлов. Но это совсам не Ctrl-1.
Что я делаю не так?
Re: Перенаправление кнопок клавиатуры
https://youtu.be/mgRj86S3YCk
Вот на видео попытался продемонстрировать это на горячих кнопках фара. Вроде должно быть понятно.
Вот на видео попытался продемонстрировать это на горячих кнопках фара. Вроде должно быть понятно.
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Ага, +8 и +2 работают как на видео. И не работают тоже как на видео. Буду копать.
Re: Перенаправление кнопок клавиатуры
Причем +C, +V, +S и все кнопки основной клавиатуры работают на wtware как надо. Не работает только комбинация +(кнопки numpada).
Re: Перенаправление кнопок клавиатуры
нет новостей?
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Это был специальный костылик для цифровых клавиш. Перед каждым нажатием цифровой клавиши втварь слала сообщение о синхронизации. Костылик гарантировал, что лампочка намлока всегда будет синхронизирована с действиями клавиш. Без него синхронность намлока обеспечивает россыпь куда менее надежных костылей. Попробую отключить, но если начнут жаловаться, возможно придется вернуть назад...
Попробуй: http://pxe.ru/files/testing/201709121757.zip
Попробуй: http://pxe.ru/files/testing/201709121757.zip
Re: Перенаправление кнопок клавиатуры
ой, спасибо огромное! На стенде все работает! Завтра поставлю на склад и проверю массово.
Re: Перенаправление кнопок клавиатуры
На складе все тоже работает! Спасибо! Просьба держать в курсе если вдруг будете опять включать "костылик"
Re: Перенаправление кнопок клавиатуры
А вот еще вопрос. В конфигурационном файле есть параметр:
keyboard = en-us-int
Откуда берется "en-us-int". Как посмотреть такой код для моей раскладки?
keyboard = en-us-int
Откуда берется "en-us-int". Как посмотреть такой код для моей раскладки?
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Полный список возможных значений есть в конфигураторе.
en-us-int это 0x00020409, список здесь: https://technet.microsoft.com/en-us/lib ... S.10).aspx
Где найти вашу - понятия не имею., наверное где-то в реестре машины, на которой оно установлено. И если найдешь, придётся ещё втварь научить приинмать численное значение...
Значение отдается серверу в поле keyboardLayout здесь: https://msdn.microsoft.com/en-us/library/cc240510.aspx
И интересное в сноске:
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.
Re: Перенаправление кнопок клавиатуры
Да, такой код для моей клавиатуры у меня есть - 0xb0080409aka писал(а): en-us-int это 0x00020409
Сложно?aka писал(а):И если найдешь, придётся ещё втварь научить приинмать численное значение...
Re: Перенаправление кнопок клавиатуры
По идее это тоже подошло бы, но оказалось огромный геморрой выставлять учеткам способы ввода по умолчанию. Языки есть, а вот если у тебя более одной клавиатуры на один язык, то указать пользователю нужную бывает очень сложно средствами Windows.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
Есть еще параметр [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001
При его установке сервер по идее должен игнорировать закладку клиента в RDP сессии. Но почему то у нас не везде оно работает. Пока разбираемся.
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
http://pxe.ru/files/testing/201710062155.zip
В конфигураторе работать пока не будет, надо прямо в текст конфига текстовым редактором вписать.
Но зачем??
Код: Выделить всё
keyboard = 0xb0060409
Но зачем??
Re: Перенаправление кнопок клавиатуры
А как еще назначить пользователю способ ввода по умолчанию? Мы много перепробовали. Почти идеально работает когда на одном сервере можно оставить только одну ракладку клавиатуры для языка и назначить ее по умолчанию новым пользователям. Текущим пользователям либо удалять профили, либо руками заходить и ставить. Плюс это все работает только с тем флагом рекстра, который я выше писал. Если его нет, то что не назначай по умолчанию пользователю при старте rbp сессии в ней будет или английский в случае wtware, либо русский/английский на rdp в windows в зависимости от текущей раскладки на винде.
Re: Перенаправление кнопок клавиатуры
aka писал(а):http://pxe.ru/files/testing/201710062155.zip
В конфигураторе работать пока не будет, надо прямо в текст конфига текстовым редактором вписать.Код: Выделить всё
keyboard = 0xb0060409
Проверил, все работает! Спасибо!
-
- Разработчик
- Сообщения: 11901
- Зарегистрирован: Ср окт 01, 2003 12:06 am
- Откуда: Роcсия, Тольятти
- Контактная информация:
Re: Перенаправление кнопок клавиатуры
Что работает? Что в документации про это написать?
Re: Перенаправление кнопок клавиатуры
Написать что-то вроде этого:
Кроме указанных в списке раскладок вы можете указать непосредственно код раскладки клавиатуры. В этом случае в конфигурационном файле необходимо указать строку вида:
Все коды раскладок клавиатур установленных у вас на сервере вы можете посмотреть в ветке реестра:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts
Я не проверял, но должно работать по документации, проверю на днях:
Если указать то сервер проигнорирует раскладку клиента и установит раскладку клавиатуры по умолчанию для текущего пользователя
[/i]
Так же можно установить на сервере ключ реестра:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001
При установленном ключе параметр keyboard конфигурационного файла будет игнорироваться и пользователю будет выставлена раскладка в соответствии с его профилем WIndows.
Кроме указанных в списке раскладок вы можете указать непосредственно код раскладки клавиатуры. В этом случае в конфигурационном файле необходимо указать строку вида:
Код: Выделить всё
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.