Просмотр полной версии : Как узнать текущую раскладку клавиатуры?
Mintonist
03.05.2010, 17:57
Собственно вопрос звучит в названии темы:
Как узнать текущую раскладку клавиатуры?
И сразу заодно - можно ли её принудительно сменитть? Еапример, хочу, чтоб всегда при загрузке flash-приложения выставлялась русская раскладка.
Спасибо!
да, ни как, но можно эммулировать.
То есть - пр нажатии Key, проверять код символа, если не русский, то запускать класс работающий по типу Пунтосвичера.А если русская, не запускать.
Сейчас точно, не помню, но вроде напрямую проверить код символа неполучится(то есть создать невидимое текстовое поле, туда записать букву, и уже по букве проверять)
Сейчас точно, не помню, но вроде напрямую проверить код символа неполучится(то есть создать невидимое текстовое поле, туда записать букву, и уже по букве проверять)
KeyboardEvent.keyCode / KeyboardEvent.charCode отменили?
KeyboardEvent.keyCode / KeyboardEvent.charCode отменили?
И как мы узнаем русская раскладка или нет?,вернет то код клавиши, а вот по букве уже можно будет узнать.
KeyboardEvent.keyCode / KeyboardEvent.charCode отменили?
Возвращаются только английские коды.
Возвращаются только английские коды.
Хм, не сталкивался. Спасибо, буду знать.
Mintonist
31.08.2010, 13:42
Спасибо за ответы, но неужели нет решения? неужели никому никогда не требовалась данная функциональность (переключение текущей раскладки клавиатуры программно).
Например, у меня в Google Crome во флеше ВСЕГДА английская раскладка1 Можно сколько угодно её переключать, но как только фокус попадает на flash - она опять английская (точнее та, что по умолчанию в системе). В других браузерах такого не замечал.
Дело, конечно, не в Google Crome. Просто функционал приложения завязан та раскладке клавы.
Сложно что ли таблицу соответствия русских клавиш английским построить, на основе KeyboardEvent.keyCode?
iillyyaa
31.08.2010, 15:55
зачем смотреть на раскладку, нужно, что бы в флеше всегда была английская к примеру ? какие проблемы ? сделать замену вводимых данных и всё...
нажал юзерь И, заменили на B, нажал Ы, заменили на S
и плевать какая у него раскладка..
Mintonist
01.09.2010, 12:42
Хорошо, сменить нельзя, кроме как таблица соответствий символов. А узнать текущую раскладку клавиатуры можно?
iillyyaa
01.09.2010, 17:10
проверь введённый символ, вот и узнаешь раскладку.. ведь раньше, чем ввели символ тебе раскладка не нужна.. где будешь обрабатывать введённый символ, проверь его заодно, если что замени...
какая разница, проверить раскладку или проверить символ ? всё равно действие нужно делать, и в одном и том же месте кода.
Sergespb
24.08.2011, 16:03
А как сделать такую замену?
как вариант (насколько надежно/универсально не проверял )
public class Main extends Sprite
{
public function Main():void
{
var tf:TextField = new TextField();
tf.type = TextFieldType.INPUT;
tf.border = true;
tf.addEventListener(TextEvent.TEXT_INPUT, tf_textInput);
tf.addEventListener(KeyboardEvent.KEY_DOWN, tf_keyDown);
addChild(tf);
}
private function tf_keyDown(e:KeyboardEvent):void
{
if (e.charCode > 0x20)
{
var tf:TextField = e.target as TextField;
tf.appendText(String.fromCharCode(e.charCode));
tf.setSelection(tf.text.length,tf.text.length);
}
}
private function tf_textInput(e:TextEvent):void
{
if (e.text.charCodeAt(0) > 0x20) e.preventDefault();
}
}
Например, у меня в Google Crome во флеше ВСЕГДА английская раскладка1 Можно сколько угодно её переключать, но как только фокус попадает на flash - она опять английская (точнее та, что по умолчанию в системе). В других браузерах такого не замечал.
Дело, конечно, не в Google Crome. Просто функционал приложения завязан та раскладке клавы.
А может, дело как раз в Хром и баге с wmode="transparent" ?)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.