Руссификатор CyrHack поддерживает внешние клавиатуры. Причем поддержка реализована достаточно универсально. Все (все 3 ;-) ) клавиатуры, с которыми я сталкивался вполне пристойно руссифицируются. Для поддержки важны три вещи: - Способ проверки активности клавиатуры. Обычно используется выставление фичи. Все определяемые клавиатуры содержатся внутри кода CyrHack и не могут быть добавлены пользователем. - Внутренние таблицы драйвера клавиатуры. Иногда их приходится изменять для правильной перекодировки нестандартных символов - Таблица перекодировки клавиш. Она хранится во внешнем языковом модуле и представляет из себя байтовый массив из 128 символов ( char transTbl[128]). При активной внешней клавиатуре и включенном русском регистре все символы из первой половины перекодируются по таблице: char ch; // входящий символ if (chMode ===== RusMode) { if (ch < 128) { ch = transTbl[ch]; } } Если клавиатура не поддерживается в CyrHack, то скорее всего это легко лечится. Во-первых нужно указать ему, что клавиатура подключена. Проще всего это можно сделать имитацией подключения PPK, выставив feature, указывающую на его активность. Здесь лежит программа: http://yahm.palmoid.com/setnrftr.prc , а вот ее исходник. #include UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) { FtrSet('KO01', 0, 0x100001); return 0; } Известные мне клавиатуры: * Palm Portable keyboard, она же PPK, Targus, ThinkOutside, Stowaway. Поддержка встроена в драйвер * Sony Clie NR70 обладает собственной клавиатурой. Мою руссификацию нестандартных клавиатур для NR-70 можно взять здесь: http://yahm.palmoid.com/cyrhacknr.zip . Руссифицированна указанными выше способами. * клавиатура Belkin G700. Прекрасно работает с русским с помощью [[http://yahm.palmoid.com/setnrftr.prc|SetNRFtr ]].