Hello, У меня такое предложение поповоду клавиш которые мы будем перехватывать. проанализировав ситуацию я сделал вывод что как правило переключают либо комбинацией нескольких служебных клавиш либо комбинацией служебных и одной обычной (пробел не служебная). Так что предлагаю всё это делать по такому принципу. у меня в стуктуре будет передаваться байт код для поля Qualifier (младшая часть). Это покроет следующие комбинации клафиш: #define IEQUALIFIER_LSHIFT 0x0001 #define IEQUALIFIER_RSHIFT 0x0002 #define IEQUALIFIER_CAPSLOCK 0x0004 #define IEQUALIFIER_CONTROL 0x0008 #define IEQUALIFIER_LALT 0x0010 #define IEQUALIFIER_RALT 0x0020 #define IEQUALIFIER_LCOMMAND 0x0040 #define IEQUALIFIER_RCOMMAND 0x0080 остальное нам и не нужно. а что касается клавиши обычноя для неё всё просто указываем код клавиши в структуре. Если юзвер переключает без обычной клавиши туда пишем 0xff - такого кода нету. Это всё. если всё понятно и возвражений нет я делаю. Нужно вот ещё что сделать... читалку из конфига чтобы она из надписи типа LSHIFT - делала в цифре 0x01 из LSHIFT+RSHIFT 0x03 и так далее из простыхз клавиш понятно делаем её код. кстати можно просто код писать и не парится. а вообще можно совсем просто. Один фиг будем делать прогу для конфига. предлагаю вот что: В конфиге (текстовом) делаем 2 записи: QUALIFIER=0x03 KEY= Этот пример делает 2 пробела. или QUALIFIER=0x01 KEY=0x00 это получается LSHIFT + кнопка с тильдой. помоему нормально. Kind regards