så vidt jeg kan se på din kode så forventer du at en alt gr giver både ctrlKey og altKey, og på den måde kan du skelne, det kan jeg ikke helt få til at virke efter jeg har kopieret din kode.
document.onkeydown = keypressed;
function touchAlt(Event) { if (window.event) { return (window.event.altKey); } else { return (Event.altKey || (Event.modifiers % 2)); } }
function keypressed(){ Event = window.event; if (touchCtrl(Event) && touchAlt(Event)){alert('Alt Gr pressed')} else if (touchCtrl(Event)){alert('Control pressed')} }
måske er der lige nogle småting omkring den måde jeg har oprettet eventhandleren.
jeg har to spørgsmål til din kode
1. du tager et Event som input til touch metoderne, men checker alligevel på om der findes et event i window. Hvorfor? hvad er forskellen på de to events
2. hvad betyder Event.modifiers, og hvilken relevans har det i dette tilfælde?
1. eller virker det ikke i FF, hvorfor har jeg ikke tænkt nærmere over, jeg har ikke opfundet koden. 2. Ved det ikke og det virker også uden.
Det ser ud som om der er en forsinkelse inden den finder ud af at både Alt og Ctrl er rørt så når du tilføjer en "else if (touchCtrl(Event)){alert('Control pressed')}" så kommer der kun alert for Ctrl, hvis du holder Alt Gr nede og klikke ok med musen viser den at Alt gr knappen er nede anden gang, måske det hjælper at sætte en tidsforsinkelse ind?
Nedenstående uden "else if (touchCtrl(Event)){alert('Control pressed')}" giver kun alert når Alt Gr er nede.
this script writtes the keycode of the presed key and the four properties of the event object that says whether the control, leftcontrol, alt, altLeft is pressed.
efter at have testet lidt med nogle forskellige taste kombinationer kom jeg frem til følgende:
et tryk på "alt Gr" giver nøjagtig det samme event som et tryk på left control dvs event.keyCode = 17 event.ctrlKey = true event.ctlLeft = true event.altKey = false event.altLeft = false
hvis Alt GR derimod holdes nede mens der trykkes på en anden knap så er properties følgende event.keyCode = [keycode for anden knap] event.ctrlKey = true event.ctlLeft = true event.altKey = true event.altLeft = false
nu er der trykket på alt.
det fik mig til at indse at et tryk på alt gr alene er fuldstændig identisk med et tryk på left control
men en kombination af alt gr og en hvilken som helst anden knap er det samme som at trykke på ctrl+alt+anden knap
hvilket nok var det nyp skrev i sit første indlæg --> Alt Gr er en sammenblanding af Ctrl og Alt
men det var åbenbart ikke helt klart for mig.
for at teste dette prøvede jeg at åbne word og fandt ud af at følgende tastekombinationer giver disse tegn (med dansk tastatur) ctrl+alt+2 = @ ctrl+alt+3 = £ ctrl+alt+4 = $ ctrl+alt+7 = { ctrl+alt+8 = [ ctrl+alt+9 = ] ctrl+alt+0 = } ctrl+alt+´ = | ctrl+alt+¨ = ~ (de ovenstående eksempler er skrevet ved brug af ctrl+alt+[tast] i stedet foralt gr+[tast])
i øvrigt er Event.modifiers = undefined i alle mine eksempler, så jeg ved stadig ikke hvad den betyder
konlusionen må være at alt gr + [tast] er det samme som ctrl+alt gr+[tast] (dog er der lige den undtagelse at alt gr+del ikke undfører ctrl+alt+delete)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.