]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/m2/gm2-libs-log/Keyboard.mod
Update copyright years.
[thirdparty/gcc.git] / gcc / m2 / gm2-libs-log / Keyboard.mod
CommitLineData
1eee94d3
GM
1(* Keyboard.mod provides compatibility with Logitech 3.0 Keyboard module.
2
a945c346 3Copyright (C) 2004-2024 Free Software Foundation, Inc.
1eee94d3
GM
4Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
5
6This file is part of GNU Modula-2.
7
8GNU Modula-2 is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 3, or (at your option)
11any later version.
12
13GNU Modula-2 is distributed in the hope that it will be useful, but
14WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16General Public License for more details.
17
18Under Section 7 of GPL version 3, you are granted additional
19permissions described in the GCC Runtime Library Exception, version
203.1, as published by the Free Software Foundation.
21
22You should have received a copy of the GNU General Public License and
23a copy of the GCC Runtime Library Exception along with this program;
24see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
25<http://www.gnu.org/licenses/>. *)
26
27IMPLEMENTATION MODULE Keyboard ;
28
29FROM Selective IMPORT SetOfFd, InitSet, KillSet, MaxFdsPlusOne, ReadCharRaw,
30 Timeval, InitTime, KillTime, FdIsSet, FdZero, FdSet,
31 Select ;
32
33
34CONST
35 stdin = 0 ;
36
37
38(*
39 Read - reads a character from StdIn. If necessary it will wait
40 for a key to become present on StdIn.
41*)
42
43PROCEDURE Read (VAR ch: CHAR) ;
44BEGIN
45 ch := ReadCharRaw(stdin)
46END Read ;
47
48
49(*
50 KeyPressed - returns TRUE if a character can be read from StdIn
51 without blocking the caller.
52*)
53
54PROCEDURE KeyPressed () : BOOLEAN ;
55VAR
56 s : SetOfFd ;
57 t : Timeval ;
58 r : INTEGER ;
59 Pressed: BOOLEAN ;
60BEGIN
61 t := InitTime(0, 0) ;
62 s := InitSet() ;
63 FdZero(s) ;
64 FdSet(stdin, s) ;
65 r := Select(MaxFdsPlusOne(stdin, stdin),
66 s, NIL, NIL, t) ;
67 Pressed := FdIsSet(stdin, s) ;
68 s := KillSet(s) ;
69 t := KillTime(t) ;
70 RETURN( Pressed )
71END KeyPressed ;
72
73
74END Keyboard.