PDA

Просмотр полной версии : [keys] left shift & right shift


$mival
14.03.2007, 16:35
Поковырял поиск - видимо никто этим не заморачивался.
Цель: отлавливать нажатия левого и правого shift'ов с клавиатуры и выполнять соответствующие КАЖДОМУ shift'у отдельные действия. На сколько я понимаю, у shift'а (левого и правого) один и тот же ASCII код. Это поставило меня в тупик. Что делать?

etc
14.03.2007, 16:53
Отлавливать чем-нибудь сторонним, если получится.
Сам флеш не при делах.

$mival
14.03.2007, 16:58
флешка будет броузерная.
JS, VB?

etc
14.03.2007, 17:07
Я думаю, VB.
JS сомнительно, что такие ньюансы отловит.

silin
14.03.2007, 20:29
Key.addListener(this);
function onKeyDown(){
if(Key.isDown(Key.SHIFT)){
trace( Key.isDown(160) ? "left" : "right");
}
}

etc
14.03.2007, 20:40
Круто! Надо было отлавливать isDown :D
Лень было экспериментировать. Практика превыше всего.

iNils
14.03.2007, 20:50
Только не понятно, причем тут неразрывный пробел или для клавиатуры код 160 что-то другое?

silin
14.03.2007, 20:53
да как бы все логично: shift отдаeт/генерит не один, а два кода, второй может и совпадать с чем угодно..

etc
14.03.2007, 21:04
Интересно, а как ты получил 160? Трейс getCode выдает 16 всегда.

iNils
14.03.2007, 21:06
Все понял. Вот дополнительные коды для shift и ctrl
shift left 160
shift right 161
ctrl left 162
ctrl right 163

silin
14.03.2007, 21:08
просто перебором
function onEnterFrame(){
for(var i=0;i<256;i++) if (Key.isDown(i)) trace(i);
}

etc
14.03.2007, 21:09
Понятно, метод тыка, значит :D
Что ж, хороший ход :D
Респект.

iNils
14.03.2007, 21:10
Почти также :)
Key.addListener (this);
function onKeyDown () {
if (Key.isDown (16) || Key.isDown (17)) {
for (var i = 0; i < 255; i++) {
if (Key.isDown (i)) {
trace (i);
}
}
}
}

etc
14.03.2007, 21:11
А true зачем? Просто для прикола? :D

iNils
14.03.2007, 21:17
Убрал, это рудимент от первоначального моего кода.

$mival
14.03.2007, 22:03
Все понял. Вот дополнительные коды для shift и ctrl
shift left 160
shift right 161
ctrl left 162
ctrl right 163Тогда понятно :umnik2:
А я тоже на трейсе подкололся, который код 16 выводил для обоих shift'ов! :D