2011-01-04 14 views

Odpowiedz

3

Nie sądzę, że kod klucza jest inny.

Możesz użyć numeru e.ctrlKey, aby uzyskać lepszy sposób określenia, czy klawisz kontrolny został naciśnięty.

Wydaje się, że Flash can not tell which one is pressed (albo to, albo zakodowane niepoprawnie).

+0

Są one wyabstrahowane. Na przykład. Mogę wybrać mnóstwo różnych opcji dla każdego z nich w ustawieniach mojej klawiatury Ubuntu. –

+0

Możesz napisać oprogramowanie, które rozróżnia je na niskim poziomie, więc nie, nie można go wyodrębnić na poziomie sprzętu. Prawdopodobnie został jednak wyodrębniony na poziomie systemu operacyjnego. –

+0

MSIE może rozróżniać lewy i prawy klawisz Ctrl, zobacz moją odpowiedź na ten temat. –

6

Po prostu krótka uwaga: Nie będę opierał architektury/projektu na dostępności odpowiedniego klawisza kontrolnego - wiele klawiatur laptopów może nie mieć dwóch klawiszy sterujących.

+1

+1 w celu uzyskania przydatnych informacji. – alex

1

MSIE zapewnia właściwość ctrlLeft dla większości zdarzeń. Wartości nieruchomości są:

  • true jeśli lewy klawisz został naciśnięty w trakcie imprezy
  • false jeśli lewy klawisz nie został naciśnięty.

Można łączyć event.ctrlKey i event.ctrlLeft celu ustalenia, czy prawy klawisz Ctrl został naciśnięty:

if (event.ctrlKey) { 
    if (event.ctrlLeft) { 
     // left Ctrl key pressed 
    } else { 
     // right Ctrl key pressed 
    } 
} else { 
    // no Ctrl key pressed 
} 

pamiętać, że obiekt w keyupctrlLeft jest nieokreślona, ​​ponieważ klawisz Ctrl nie jest wciśnięty dłużej.

Testowany w MSIE7 i MSIE9. Nie działa w Firefoksie.

Aby uzyskać szczegółowe informacje, patrz http://help.dottoro.com/ljqlvhuf.php.

+0

Niezbyt przydatne niestety, jeśli jest to tylko IE. – alex

1

Jeśli prześledzić ją znajdziesz ten sam klucz jest używany dla obu (17) .. Myślę, że to nie jest możliwe rozróżnienie

1

Nie wiem, czy to było dostępne, gdy ten został poproszony, ale możesz można odróżnić lewy od prawego-ctrl, a także alt i shift. Możesz teraz użyć właściwości KeyboardEvent.DOM_KEY_LOCATION_ *, aby wprowadzić to rozróżnienie.

Zobacz Can javascript tell the difference between left and right shift key?

Należy pamiętać jednak, odkryłem, że Chrome wydaje się mieć wady w jego realizacji. Zobacz How can I distinguish left- and right- shift, ctrl, and alt keys onkeyup in Chrome with Javascript

1

Jest event.location nieruchomość dla lewego klawisza ctrl będzie to 1 dla słuszna 2, można sprawdzić na obsługę przeglądarki canIuse

if (e.which == 17) { 
    if (event.location == 1) { 
     // left ctrl key 
    } else if (event.location == 2) { 
     // right ctrl key 
    } 
} 
Powiązane problemy