Глядя на все эти устройства ввода, я вот что подумал. Руки постоянно находятся над клавиатурой, так? Так может сделать что-то, по принципу похожее на устройство Льва Термена? Просто подложить пластиночку, допустим под область NumPad внутри клавиатуры, которая будет являться антенной... Вообще, в натуральном терменвоксе было 2 антенны - одна управляла тональностью, другая - громкостью. Тогда пусть пластинка под клавиатурой (ну или антенна в виде штыря вдоль боковой стенки внутри) играет роль модулятора частоты, а громкость нам не нужна. Да, я чуть не забыл о постановке задачи. Вот какую фишку можно сделать: при определенном положении руки (правой например) над антенной на выходе будет получаться какая-то частота (пусть в небольшом диапазоне) - ее подать на последовательный порт, а потом проанализировать программой типа тех, что анализируют сигналы от ИК-приемника. Одно отличие - для ИК последовательностей анализируются посылки (пакеты) - там вообще, одна частота, а здесь придется анализировать частоту импульсов. Хотя можно поставить какой-то анализатор еще на уровне железной части, который будет выдавать уже определенный двоичный код в соответствие с каждой частотой, который уже не составит труда приспособить.
Я нашел одну достаточно простую схему терменвокса, из которой выделил часть, необходимую только для получения низкой частоты для ввода ее в последовательный порт.
Оригинальная же схема терменвокса основывается на том, что емкость, вносимая в контур генератора (которая и изменяет частоту) сама по себе не такая уж и большая, чтобы ей можно было управлять генератором в пределах звуковой частоты напрямую, поэтому делают вот как: есть два генератора - один с постоянной частотой (большой - порядка 300-400кГц - этого достаточно, чтобы емкость человека была сравнима уже с емкостью задающих RC-цепочек), и другой - такой же, но вот как раз RC-цепочка его включает антенну, на которую можно воздействовать своей емкостью. Разности частот генераторов отнимаются и получается на выходе частоты звукового диапазона, которую уже можно усиливать и т.д. В случае с последовательным портом это как раз наш случай - 300-400кГц в последовательный порт не введешь.
На рисунке можете видеть два генератора - один с постоянной частотой (D2.1-D2.3), другой (на элементах D1.1-D1.3) с частотой, на которую влияет емкость C4 (человек), все это результируется на элементе И-НЕ (D1.4), с выхода которого можно уже снимать звуковую частоту (R4 - это нагрузка).
Конечно, на частоту будет влиять много факторов - влажность воздуха, положение руки и т.п. но можно ограничить разбросы частоты даже чисто программным способом. Есть два пути - первый: все обрабатывать программно - т.е. смотреть изменения частот и принимать решения, второй: на уровне железа поставить анализатор, который будет давать двоичный код в зависимости от частоты генератора.
К примеру, при поднесении рук к клавиатуре, программа может сама выключить screensaver, или при повороте кисти свернуть окна, да много чего можно напридумывать - нужен только софт (я думаю, уже верхняя часть в виде всяких Girder и пр. вполне подойдут) Осталось написать что-то вроде Lirc, который будет посылать команды в [логический] порт, анализируя последовательный порт, к которому прицепить железячку, которая вполне может иметь схему, которую я дал. Если у кого есть соображения - я приму с большим вниманием. (e-mail:chizh@irk.ru)
Тем более, что я о таких штука еще не слыхал (применительно к компьютерам). Я бы назвал такое устройство TermenPad.