Vad gör enter-tangenten?

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

Hej!

Jag undrer på om någon här vet om entertangenten skickar mer är just ancii koden 00x3
altså ETX (end of text). Skickar man 00x3 med ctrl c (inte att förvexla med copy komando c) till exempelvis i TextEdit får man varningsljud, men använder man enter reagerar TextEdit som om man skickar CR eller LF. Så där måste ju vare en skillnad. Varför skulle annars ett program göra olika om det får samma ancii kode??

Det förbryller mig, kan någon hjelpe är jag tacksam.

Mvh Ole

  • Medlem
  • Mölndal
  • 2006-10-19 15:52

Det är ju inte säkert att programmen enbart tittar på vilken ASCII-kod de får, en del kanske kollar på key code/scan code (alltså vilken fysisk knapp) istället.

  • Medlem
  • Norrköping
  • 2006-10-19 19:50

Jag hoppas det är ok om jag gissar lite - jag är inte särskilt insatt i Cocoa-programmering:

Tangentbordslayoutfilen mappar mycket riktigt tangentkod 52 (vilket jag tror är entertangenten) till ASCII 0x03 (eg. Unicode U+0003).

Jag antar att TextEdit använder antingen ett av Cocoa-API:ns standardtextrutor eller i alla fall en standardteckenläsare för att ta inmatningar från tangentbordet. Denna funktion/metod använder ju uppenbart tangentbordslayoutfilen eftersom det går att byta layout, men vissa tangentinmatningar måste tolkas. Exempelvis är backsteg mappat till 0x08, men det vore ju galet att bara infoga detta Unicodetecken i textmassan, så 0x08 tar istället bort föregående tecken. På samma sätt ersätts antagligen 0x03 (ETX) och 0x0D (vagnretur, CR) med 0x0A (radmatning, LF). Före OS X var macstandarden CR, men nu är det LF, precis som andra *NIX-varianter (Windows kör CRLF).

Skillnaden du upplever består i att kontrollkoder som ctrl-c för ETX och ctrl-m för vagnretur inte används/fungerar i OS X som på en gammal terminal förutom i just terminalen. Däremot fungerar många emacs-genvägar i Cocoaapplikationer, se denna lista. Prova till exempel att ställa markören mellan 99 och mac i Safari:s adressfält och tryck ctrl-t.

Tack memark och MarkDF

Ursprungligen av OleSand:

Hej!

Jag undrer på om någon här vet om entertangenten skickar mer är just ancii koden 00x3
altså ETX (end of text). Skickar man 00x3 med ctrl c (inte att förvexla med copy komando c) till exempelvis i TextEdit får man varningsljud, men använder man enter reagerar TextEdit som om man skickar CR eller LF. Så där måste ju vare en skillnad. Varför skulle annars ett program göra olika om det får samma ancii kode??

Det förbryller mig, kan någon hjelpe är jag tacksam.

Mvh Ole

I striktaste mening skickar enter-tangenten inte alls någon ASCII-kod. Den skickar någon låg-nivå signal som identifierar den i I/O-kit. Någonstans (jag vet exakt vad som sker) där kan den sedan mappas till att betyda något mer. Exakt vad den för för betydelse vet jag inte men uppenbart är att ctrl-C får en annan semantisk betydelse. Kolla i documentationen och leta efter "Key Codes" typ keyCode eller något liknande.

http://developer.apple.com/qa/qa2005/qa1446.html

http://developer.apple.com/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/chapter_2_section_2.html

1
Bevaka tråden