Prolog's default ways of eliciting keyboard input are enumerated in the clauses for query_abbreviation/3 in messages(language('')). These clauses specify valid abbreviations for a given key word. For example,


A French translator might decide that the letters O and o are reasonable abbreviations for oui (yes), and therefore write yes-"oO". See the reference page for more information on query_abbreviation/3.

The query hook provides a means of overriding the default interaction. Whenever Prolog attempts to solicit input from the user, it first looks to see if the application wants to take control of the query by calling user:query_hook/6 (see the above figure). The various queries are listed in the manual page for query_hook/6. For example, if Prolog is looking for a yes-no response, as in the toplevel, this request for input can be captured as follows, where my_yes_no/2 binds Answer to yes or no: