| 
									
										
										
										
											2020-05-24 21:30:55 +01:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							|  |  |  | #ifndef KEYBOARD_H
 | 
					
						
							|  |  |  | #define KEYBOARD_H
 | 
					
						
							| 
									
										
										
										
											2021-12-22 17:31:06 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include <stdbool.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-24 21:30:55 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Provides the keyboard interface. It converts incoming key codes to | 
					
						
							|  |  |  |  * ASCII characters. | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-12-22 17:31:06 +00:00
										 |  |  |  * Copyright (C) 2020-2021 Martin Whitaker. | 
					
						
							| 
									
										
										
										
											2020-05-24 21:30:55 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * The Escape character. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define ESC     27
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-22 17:31:06 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * A set of supported keyboard types. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | typedef enum { | 
					
						
							|  |  |  |     KT_NONE    = 0, | 
					
						
							|  |  |  |     KT_LEGACY  = 1, | 
					
						
							|  |  |  |     KT_USB     = 2 | 
					
						
							|  |  |  | } keyboard_types_t; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * The set of enabled keyboard types | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | extern keyboard_types_t keyboard_types; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * Initialises the keyboard interface. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | void keyboard_init(bool pause_at_end); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-24 21:30:55 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Checks if a key has been pressed and returns the primary ASCII character | 
					
						
							|  |  |  |  * corresponding to that key if so, otherwise returns the null character. | 
					
						
							|  |  |  |  * F1 to F10 are mapped to the corresponding decimal digit (F10 -> 0). All | 
					
						
							|  |  |  |  * other keys that don't have a corresponding ASCII character are ignored. | 
					
						
							|  |  |  |  * Characters are only returned for key presses, not key releases. A US | 
					
						
							|  |  |  |  * keyboard layout is assumed (because we can't easily do anything else). | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | char get_key(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // KEYBOARD_H
 |