stdout und taste drücken

485

Wenn ich in der Konsole eine Taste drücke, sendet ein Interrupt-Controller den Code dieses Schlüssels an die CPU, die in eine Tabelle schaut und dann den Tastendruck darstellt, indem sie eine Zeichenfolge an stdout druckt. Aber sendet die Tastatur einen ASCII-Code des Schlüssels oder nur einen standardisierten Code? Da es so viele Sprachen und zusätzliche Zeichen gibt, muss das Betriebssystem seinen Code in ein beliebiges Zeichen gemäß dem vom Benutzer ausgewählten Schema übersetzen, schätze ich. Ich frage, weil ich aus Tschechien komme und wir einige Zeichen verwenden, die im Standard-ASCII-Code nicht vorhanden sind. Also dachte ich mir, wenn ich dieses Zeichen in eine Konsole eingebe und es dann drucke, sagen wir in C ++ mit cin und cout, und ich habe Locale auf Czech gesetzt, muss stdin tatsächlich etwas Nicht-ASCII-Code des von mir gedrückten Zeichens senden Stream eingeben. Habe ich recht?

0
Welche Plattform? Windows, Linux oder Mac OS X? Peter Mortensen vor 14 Jahren 0

1 Antwort auf die Frage

2
Peter Mortensen

For the first question: keyboards send scancodes, not ASCII or Unicode.

Software on the computer then interprets the scancodes, e.g. the BIOS during boot or the operating system. E.g. in Linux scancodes and shifting state are interpreted by kernel key maps that translate keycodes to 16 bit numbers, which are normally Unicode/ASCII characters.