forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   2 клавиатуры (http://forum.boolean.name/showthread.php?t=13613)

Winner 29.10.2010 17:12

2 клавиатуры
 
Если подключить к компьютеру 2 клавиатуры, например, одну через usb порт, а другую через ps/2, то они будут работать одинаково.

Как в Delphi различать, на какой клавиатуре была нажата, например, клавиша ЭНТЕР?

Randomize 01.11.2010 04:52

Ответ: 2 клавиатуры
 
Цитата:

Сообщение от Winner (Сообщение 166499)
Если подключить к компьютеру 2 клавиатуры, например, одну через usb порт, а другую через ps/2, то они будут работать одинаково.

Даже больше. Они будут работать как одна.

Цитата:

Как в Delphi различать, на какой клавиатуре была нажата, например, клавиша ЭНТЕР?
На Delphi... Начни с написания специфического драйвера для клавиатуры.

JACUK 01.11.2010 11:12

Ответ: 2 клавиатуры
 
Всё зависит от драйвера, это тоже самое что спросить "а что будет если подключить к ноуту две мышки???"

den 01.11.2010 11:32

Ответ: 2 клавиатуры
 
Стандартный драйвер будет распозновать как одну.
Помню подключал две мышки, если тянуть одновременно в разные стороны, то укозатель будет стоять на месте:)

Winner 01.11.2010 13:56

Ответ: 2 клавиатуры
 
А работать напрямую с портом нельзя в делфи? Клавиатуры подключены к разным типам портов. Неужели нельзя определить, с какого из них прошел сигнал?

ViNT 01.11.2010 15:53

Ответ: 2 клавиатуры
 
Если одна клава на USB, то она работает через HID.
Значит, теоретически, можно попробовать так:
-Берем компонент/модуль/DLL, реализующий работу с HID;
-Подключаемся этим компонентом к USB-клавиатуре;
-В стандартном обработчике OnKeyPressed проверяем, что в данный момент поступило с HID'а - если то же самое, что и в обработчик - значит нажато на USB-клаве, если ничего - значит на PS/2, если другое - значит, на USB нажато то, что поступило с HID, на PS/2 то, что поступило в обработчик.

Минусы - придется разобраться с HID, одновременное нажатие одинаковых кнопок на клавиатурах будет воспринято, как нажатие на USB.
Идея чисто теоретическая, я ничего подобного не делал.

Winner 01.11.2010 16:38

Ответ: 2 клавиатуры
 
Я уже пытался разобраться с hid компонентом, но не нашел, где принимаются данные. Нашел raw input метод, но там опять же не нашел фильтрации клавиатур. Хотя пока рыскал в гугле, попадал на тему, в которой человек выкладывал код, где он различал 2 мышки.

WaReZ_MEN 01.11.2010 17:01

Ответ: 2 клавиатуры
 
вот вам заняться нечем... вы еще беспроводную клаву подрубите и сканер кредиток который на прерываниях клавы работает.

Winner 01.11.2010 18:27

Ответ: 2 клавиатуры
 
У меня пульт с ИК-приемником, который подключается через USB и виден как HID keyboard, и 2 монитора. Я хочу сделать так, чтобы на одном мониторе можно было бы смотреть кино и управлять им через пульт, а на другом сидеть в интернете и чтобы никто друг другу не мешал. Думаю, это желание оправданное и возникло далеко не от страдания бездельем.

den 01.11.2010 19:39

Ответ: 2 клавиатуры
 
Можно перпаять клаву на COM / LPT порт, написать прогу улавливающие сигналы, и когда ловится определённый сигнал, стандартными WinApi функциями эммулировать нажатия кнопок на клавиатуре.

Randomize 01.11.2010 19:44

Ответ: 2 клавиатуры
 
А можно тостер подрубить и отлавливать вставляние хлебцев. Был бы в этом смысл. Winner, какую цель ты приследуешь?

Winner 01.11.2010 20:13

Ответ: 2 клавиатуры
 
Цитата:

Сообщение от Winner (Сообщение 166716)
У меня пульт с ИК-приемником, который подключается через USB и виден как HID keyboard, и 2 монитора. Я хочу сделать так, чтобы на одном мониторе можно было бы смотреть кино и управлять им через пульт, а на другом сидеть в интернете и чтобы никто друг другу не мешал.

Т.е. нажатия на пульте срабатывают только для моего проигрывателя, а основная клавиатура работает как раньше.

Это моя цель - написать программу, которая будет выполнять вышеупомянутые требования.

Мой план реализации:
1. распознать, откуда (чем) была нажата клавиша,
2. глобальным хуком перехватить нажатие,
3. отправить сигнал, например, winamp'u, а вообще kmplayer'u.

Из всего этого я самостоятельно не могу разобраться только с первым пунктом.


Часовой пояс GMT +4, время: 23:24.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot