Касательно переключения языка ввода с клавиатуры. При печати с клавиатуры, пользователю приходится постоянно помнить, какой язык в данный момент выбран. Периодически забывая, какой язык в данный момент включен, печатается неправильный текст. Индикатору языка в углу не хватает наглядности, т.к. он находится в стороне от области ввода и от центра внимания.
Сигнализировать язык ввода можно цветом курсора, т.к. он всегда находится в точке ввода текста и в центре внимания. Например, синий цвет при английской раскладке, красный цвет при русской раскладке.
Вариант технической реализации многоцветного курсора. Как правило, мигание курсора выполняется путём периодического выполнения операции инверсии над текущим цветом. При этом происходит полная инверсия, белый превращается в чёрный, и наоборот. Для придания других световых окрасок можно использовать способ частичной инверсии, где инвертируется не все 3 составляющие цвета (RGB), а только некоторые части. Например, если инвертировать только B цвет, то получится мигание синим цветом; если инвертировать R и G, то получится жёлтое мигание, и т.п.
Пример на языке Си с использованием операции XOR. Здесь 0xFF является маской синей составляющей пиксела. Pixel = Pixel ^ 0xFF; Если фон символа белый, то маска должна быть инверсная: Pixel = Pixel ^ ~0xFF; или Pixel = Pixel ^ -0x100; что эквивелентно Pixel = Pixel ^ 0xFFFFFF00;
|