bind '#c' /dev /dev/cons /dev/consctl /dev/keyboard /dev/memory /dev/pin /dev/pointer /dev/random /dev/sysname /dev/time /dev/user
Reading the cons file returns characters typed on the keyboard. Normally, characters are buffered until a newline ('\n') is entered to enable erase and kill processing via special characters:
A control-U, ^U, typed at the keyboard kills the current input line (removes all characters from the buffer of characters not yet read via cons).|
A backspace erases the previous non-kill, non-erase character from the input buffer. Killing and erasing only delete characters back to, but not including, the last newline.|
Typed keystrokes produce 16-bit characters that are translated into the variable-length UTF encoding (see utf) before putting them into the buffer. A read of length greater than zero causes the process to wait until a newline or a ^D ends the buffer, and then returns as much of the buffer as the argument to read allows, but only up to one complete line.
A terminating ^D is not put into the buffer. The next read will return immediately with unread bytes typed since the last newline but before the ^D. Thus, a ^D entered at the start of a line will cause a read system call to return 0 bytes, the equivalent of reading at the end of a file.
The behavior of the keyboard input can be changed by writing certain control strings to the consctl file.
If the string "rawon" has been written to the consctl file and the file is still open, cons is in "raw mode". That is:
The integers are the device's coordinates on the screen (x and y) and a bit mask with the 1, 2, and 4 bits set when the pointer's left, middle, and right buttons, respectively, are down.
The pin file, when read, returns either the string "no pin" if no PIN has been set for authentication, or "pin set", if one has. The pin file may be written once per process group with a decimal representation of the PIN to use on this Inferno machine.
The random device returns as many bytes of random data as are requested in the read.
When the file contains numeric data, each number is formatted in decimal as an 11-digit number with leading blanks and one trailing blank: twelve bytes total. There is no trailing newline character.
The sysname file holds the text name of the machine. No privilege is needed to write to this file.
The user file contains the name of the user associated with the current process group.
The memory file returns a formatted presentation of the state of the memory allocation pools in the system. Each line of output returned reports, for a single pool:
This `clock' can be reset by writing the desired time value (in decimal format) to the time file.
prints data about kernel processes|
prints the kernel stack|
prints data about memory allocation|
reboots the system|
These sequences have no special meaning when running the emulator (emu).