7.1.1 Funcionamiento del teclado
§1 Presentación
Junto con el ratón mecánico tradicional (no los actuales modelos ópticos), el teclado es el dispositivo más sencillo que puede conectarse al ordenador. Sin embargo, alberga una electrónica relativamente compleja y sofisticada que, en los modelos AT y siguientes, incluye un procesador relativamente potente; cierta cantidad de memoria EEPROM para guardar la configuración; cierta cantidad de memoria ROM que actúa como una mini-BIOS del dispositivo, y capacidad de chequeo y auto diagnóstico, además de otras funciones.
La razón de esta complejidad es que, aparte de enviar las señales adecuadas a la placa-base, la tarea de recoger la señal de interruptores mecánicos no es tan trivial como pudiera parecer a primera vista. Los que hayan intentado diseñar interfaces para introducir simples señales ON/OF en un PC, saben que la tarea puede ser extraordinariamente compleja. Incluso con los pequeños niveles de tensión que manejan en los circuitos TTL, los interruptores mecánicos producen microchispas y rebotes ("Bouncing") que duplican la señal y complican el diseño de estos dispositivos; hasta el extremo que no es infrecuente que se recurra a "chapucear" la electrónica del teclado para estos menesteres.
Después de haber lidiado con este tipo de dificultades, y haber comprobado que el único problema de un teclado medianamente bueno es derramar encima el café, me atrevería de decir que el diseño de los señores de la IBM, es una obra maestra de fiabilidad y simplicidad.
§2 Generalidades
El teclado del IBM PC es un periférico que utiliza una comunicación serie síncrona ( H2.5a) para conectar con la placa-base [1]. El diálogo se realiza entre el controlador de periféricos 8255 instalado en la placa ( 2) y la electrónica situada en el interior del propio teclado, aunque la comunicación con el PIC no se realiza directamente, sino a través de una interfaz constituida por un chip 8042 o un 8742 en el modelo AT [4]. Como anunciábamos al tratar del controlador de periféricos, la conexión lógica se realiza por las direcciones 60h-63h en el PC XT y 060h-064h en el AT.
Nota: En los modelos XT esta comunicación era unidireccional, en el sentido del teclado a la placa-base, pero a partir del AT es bidireccional, con lo que es posible configurar ciertos comportamientos del teclado desde la placa-base.
El controlador de teclado en un circuito integrado (IC) situado en su interior. Inicialmente era un 8048 que posteriormente fue sustituido por un 8049. Pero actualmente cada fabricante utiliza su propio controlador de los que existen gran variedad en el mercado. La misión principal de este IC es escanear las teclas, e informar si alguna ha sido pulsada o liberada.
Además de la misión principal, el controlador de teclado realiza otras funciones auxiliares; tiene capacidad de chequeo y diagnóstico, y dispone de un "buffer" capaz de almacenar las últimas 20 pulsaciones para el caso improbable que el 8042 no pueda leerlas con suficiente rapidez. Además, si alguna tecla se mantiene pulsada por más de un tiempo determinado (del orden de 0.5 segundos), es capaz de generar repetidamente la acción a intervalos determinados.
§3 Funcionamiento
Lejos de lo que podría parecer a primera vista, existe una larga, y a veces complicada, sucesión de acontecimientos entre el instante en que se pulsa una tecla, Por ejemplo una "A", y el momento en que aparece dicho carácter en el procesador de textos. La trayectoria más compleja se presenta en las aplicaciones ejecutadas bajo una interfaz gráfica. Por ejemplo un editor en Windows o Linux bajo uno de sus entornos gráficos (KDE, por ejemplo). El caso más simple podemos encontrarlo en aplicaciones corriendo en modo texto. Por ejemplo, en MS-DOS. Esta sucesión de acontecimientos explica, entre otras cosas, porqué puede pulsarse la tecla punto y coma :/; (a la derecha de la tecla "L") en un teclado americano, y aparecer una "Ñ" en la pantalla si hemos cargado el "Idioma" adecuado en nuestro sistema.
La exposición, desde la óptica del PC compatible IBM, la dividiremos en tres partes: Las dos primeras son comunes a todos los Sistemas Operativos; se refieren a la forma en que es detectado y configurado el teclado durante el arranque, y como llega la notificación de la tecla (o combinación de teclas) pulsadas a la placa-base. La tercera se refiere al tratamiento que hace el SO con la información recibida y será tratada en el siguiente capítulo ( 7.1.2).
§3.1 Detección y chequeo del teclado
Cuando se establece la tensión adecuada, a través del cable que lo conecta con la placa-base, el controlador del teclado realiza un auto-test que comprende su electrónica y la de su interfaz, después de lo cual envía el código AA al 8042 o un FD si existe algún problema.
A tratar de el BIOS, señalamos que dentro de sus funciones, están el inventario de recursos y comprobación del hardware ( 4.2). En lo referente al teclado, el POST realiza una comprobación de que este periférico y su interfaz funcionan correctamente, generándose un error en caso de problemas. Además de estas comprobaciones, el BIOS detecta el tipo de teclado conectado y lo inicializa.
La calidad de la verificación realizada por el POST depende del BIOS utilizado; en el mejor de los casos, los POST-codes referidos al teclado pueden ser del siguiente tipo (de una BIOS AMI color):
25 Check 8042 KBC
26 Global data for KBC
66 Perform 8259 PIC initialization
67 Perform Keyboard test
80 Keyboard reset
81 Perform stuck key and batch test (keyboard)
82 Run 8042 KBC test
83 Perform lock key check
Lo anterior es también de aplicación a los códigos de diagnóstico ( 4.2), que dependen de la BIOS utilizada. Los relativos al teclado de las BIOS IBM son los siguientes (mantenemos los mensajes en inglés - como aparecen en el manual IBM):
301 Keyboard did not respond correctly (stuck key detected)
302 Keyboard locked (AT models 25, 30)
303 Keyboard/system board interface error - keyboard controller fault
304 Keyboard or system unit error (keyboard clock stuck high)
305 Keyboard fuse failed on system board (PS/2 50, 60, 80) or +5 Volt error (PS/270)
306 Unsupported keyboard attached
341 Keyboard error
342 Keyboard cable error
343 Enhancemente card or cable error
365 Keyboard failure
366 Interface cable failure
367 Enhancement card or cable failure
Nota: Tradicionalmente, los manuales de mantenimiento señalaban que si después de sustituido el teclado por uno comprobado, el problema persistía, debería sustituirse el integrado correspondiente de la placa-base (situado cerca del conector de teclado). En las placas actuales esto no es posible ni rentable. La solución es sustituir la placa-base.
§3.2 Configuración BIOS
Es importante reseñar que los primeros equipos estaban pensados para funcionar con teclado, por lo que en caso de error en el POST, el sistema se detenía. En la actualidad, cuando muchos equipos se utilizan como servidores sin atención humana, incluso conectados a un teclado compartido [7] las BIOSes permiten continuar el proceso, incluso en caso de fallo (por ausencia) del teclado. A este respecto, el comportamiento del POST depende de los parámetros de configuración establecidos. Los más importantes en lo que se refiere a este punto, son los siguientes (mantenemos el mensaje en inglés - como aparecen en el programa de "Set-Up"):
- Halt On / Halt On Errors: Este parámetro indica al POST si debe detenerse y advertir al usuario si ocurren ciertos errores durante el proceso. Uno de ellos se refiere a ignorar los errores relacionados con el teclado. Generalmente seleccionando "Halt on", puede seleccionarse una segunda opción: "all errors but keyboard", que indicará que debe seguir aunque aparezca un error de teclado en la secuencia de inicio.
- Keyboard Present: Este caso es análogo al anterior. Ponga "No" si el equipo arrancará sin teclado.
- Typematic Delay: Se refiere al intervalo, milisegundos, antes que la pulsación continuada de una tecla inicie la repetición automática .
- Typematic Rate: Poner aquí la velocidad de repetición deseada, en caracteres por segundo, para la repetición de teclas.
- USB Legacy Support: Habilita el soporte para teclado USB (en las BIOS que están capacitadas para ello). En algunas BIOSes Phoenix aparece en la sección "Integrated Peripherals" del menú principal de Setup, bajo el epígrafe "USB Keyboard Support". En este caso, existe otro epígrafe, "USB Controller", que debe ser también activado ("Enabled").
§3.3 Código de exploración
Cuando se pulsa una tecla, el chip del teclado genera un código de exploración ("Scan code") de un byte, que en este caso se denomina código de acción ("Make code"). Cuando posteriormente la tecla es liberada, se genera un nuevo código ("Break code"), cuyo valor es el de pulsación incrementado en 128. Por ejemplo, cuando se pulsa la letra "A" se genera un código de exploración 30 (1Eh), y de 30 + 128 = 158 (9Eh) cuando se libera [5].
En la tabla adjunta se muestran los códigos de exploración del teclado estándar de 101/102 teclas [3], aunque debemos advertir que existen tres de estas tablas:
- Scancode set 1: IBM PC XT
- Scancode set 2: IBM PC AT
- Scancode set 3: IBM PS/2
El más universalmente utilizado es el tipo 2, correspondiente al PC AT, aunque puede haber diferencias puntuales entre los fabricantes. Lo más probable es que, cualquiera que sea el juego de caracteres utilizado, la rutinas de servicio del teclado la transformen en el tipo 1 antes de traducirlos en byte-codes .
Núm. de tecla - Carácter - Código de exploración ("scancode") hexadecimal | |||
1- ‘ - 29 2 - 1 - 2 3 - 2 - 3 4 - 3 - 4 5 - 4 -5 6- 5 - 6 7 - 6 - 7 8 7 8 9 8 9 10 9 0A 11 0 0B 12 - 0C 13 = 0D 15 Backspace 0E 16 Tab 0F 17 Q 10 18 W 11 19 E 12 20 R 13 21 T 14 22 Y 15 23 U 16 24 I 17 25 O 18 26 P 19 |
27 [ 1A 28 ] 1B 29 \ (101-key) 2B 30 Caps Lock 3A 31 A 1E 32 S 1F 33 D 20 34 F 21 35 G 22 36 H 23 37 J 24 38 K 25 39 L 26 40 ; 27 41 ‘ 28 42 # (102-key) 2B 43 Enter 1C 44 Left Shift 2A 45 \ (102-key) 56 46 Z 2C 47 X 2D 48 C 2E 49 V 2F 50 B 30 51 N 31 52 M 32 |
53 , 33 54 . 34 55 / 35 57 Right Shift 36 58 Left Ctrl 1D 60 Left Alt 38 61 Spacebar 39 62 Right Alt E0,38 64 Right Ctrl E0,1D 75 Insert E0,52 76 Delete E0,53 79 Left arrow E0,4B 80 Home E0,47 81 End E0,4F 83 Up arrow E0,48 84 Down arrow E0,50 85 Page Up E0,49 86 Page Down E0,51 89 Right arrow E0,4D 90 Num Lock 45 91 Keypad 7 (Home) 47 92 Keypad 4 (Left) 4B 93 Keypad 1 (End) 4F 95 Keypad / E0,35 96 Keypad 8 (Up) 48 97 Keypad 5 4C |
98 Keypad 2 (Down) 50 99 Keypad 0 (Ins) 52 100 Keypad * 37 101 Keypad 9 (PgUp) 49 102 Keypad 6 (Left) 4D 103 Keypad 3 (PgDn) 51 104 Keypad . (Del) 53 105 Keypad - 4A 106 Keypad + 4E 108 Keypad Enter E0,1C 110 Escape 1 112 F1 3B 113 F2 3C 114 F3 3D 115 F4 3E 116 F5 3F 117 F6 40 118 F7 41 119 F8 42 120 F9 43 121 F10 44 122 F11 57 123 F12 58 124 PrtScr E0,2A,E0,37 125 ScrLk 46 126 Pause E1,1D,45 E1,9D,C5 |
La generación de los "Scan codes" tiene algunas peculiaridades que conviene resaltar:
- Puesto que se dispone de 1 byte para el código de exploración, en principio pueden generarse 255 códigos distintos. De estas posibilidades, la primera mitad, con el bit7 = 0, está reservada a los "Make codes" (en los primeros teclados XT era un número del 1 al 83).
- Salvo raras excepciones, las teclas producen dos tipos de códigos. La mayoría produce un makecode de 7 bits, en el rango 01-7Fh (en realidad de 8 bits, con el bit 7 a cero). Mientras que otras producen dos códigos de acción (otros dos en la liberación), de los cuales el primero es de 8 bits (el carácter E0h), y el segundo de 7 bits.
- Para las teclas del primer grupo, que generan un solo código, el breakcode se obtiene sumando 128 al makecode (poniendo el bit 7 a 1). En el segundo grupo, que generan dos códigos, el primer carácter de los códigos de pulsación y liberación es siempre igual a E0h. El segundo carácter del breakcode se obtiene también incrementando en 128 el valor del segundo carácter del makecode.
- En el caso de teclas duplicadas. Por ejemplo, las teclas Alt y Ctrl a ambos lados de la barra espaciadora, o las que aparecen en el bloque de teclas normales y el "Key pad" numérico independiente, el código de exploración generado es distinto para cada tecla, por lo que el sistema puede discriminar perfectamente de donde proviene la señal [2].
- Puesto que los códigos de pulsación y liberación de tecla son distintos, y el sistema guarda un registro de tales movimientos, la rutina que atiende las interrupciones del teclado (que tiene un área de memoria para almacenar estos datos ), puede saber si, por ejemplo, estamos pulsando una "A" mientras mantenemos pulsada la tecla de mayúsculas o la pulsamos estando esta en reposo.
- Además de las teclas estándar, que generan 1 o dos códigos, existen dos, PrtSc y Pause, que envían una serie de 6 códigos en forma de cadena.
- La tecla Ctrl produce códigos de 2 bytes cuando se pulsa aisladamente y de uno cuando se pulsa en combinación con otras.
- Las teclas Tab,
Enter, Esc y Backspace son las
únicas que no producen un código de retorno ("Break code").
Pueden ser simuladas mediante combinaciones de la tecla Control:
- Tab = Ctrl + I
- Enter = Ctrl + M
- Esc = Ctrl + [
- Backspace = Ctrl + H
Las teclas de función F1 - F12 producen códigos de 2 bytes que son diferentes si se pulsan aisladas, o en combinación con las teclas Shift, Ctrl y Alt. Lo que produce a un total de 48 grupos de códigos distintos.
Nota: Los usuarios de Linux disponen una utilidad especial, showkey, que permite obtener los "Scan codes" de las teclas. Esta rutina hay que llamarla desde una consola root con la opcón -s (consultar man showkey).
§3.4 Solicitar atención
El código de exploración es depositado en el puerto A (060h) del controlador de periféricos, por lo que cada pulsación/retroceso registra dos códigos en el PIO, y cada vez el referido controlador devuelve rápidamente una señal de reconocimiento ACK al chip del teclado, lo que se realiza por el puerto B (061h) del citado controlador.
Además de lo anterior, cuando el PIO recibe un código de exploración, genera una petición de interrupción poniendo en tensión baja la línea IRQ1 del bus de datos (que está reservada al teclado 2.4). Cuando la interrupción es atendida y el procesador interroga, el controlador de interrupciones PIC contesta con la interrupción número 9 (de teclado) y enmascara las siguientes peticiones que pudieran producirse en la línea IRQ1 hasta que la actual haya sido atendida.
El valor 9 da una pista de donde se encuentra la rutina que atiende el servicio, que es activada ( 2.4). Esta rutina sabe que tiene que leer el puerto de teclado (60h) para ver que código de exploración hay en el bufer de la interfaz de teclado. A continuación transforma éste número en un código de 2 bytes, conocidos como keycodes o bytecodes, que son pasados al búfer del teclado hasta que los lee algún programa que los necesita.
La regla de formación de estos dos keycodes es como sigue:
- Si se pulsa una tecla del teclado estándar, el byte auxiliar (de la izquierda, de mayor peso) contiene el propio código de exploración, mientras que el byte principal (de menor peso) contiene el código ASCII del carácter de la tecla (1 a 255). Para la determinación se tienen en cuenta los "Bytes de estado" (ver a continuación ).
- Cuando se pulsa una tecla especial, como es el caso de las teclas de función (F1/F12) o Shift; las teclas de movimiento de cursor, como Home o End, y las del teclado numérico independiente, el byte principal contiene un cero y el auxiliar contiene el código de exploración.
Tenga en cuenta que los "Break code" son descartados, a excepción de los que corresponden a teclas de conmutación ( 7.1) permanentes y no permanentes, que tiene influencia en los bytes de estado.
Nota: El comportamiento anterior corresponde a la versión estándar de la rutina 9 de la BIOS, tal como es utilizada por MS-DOS. Algunos Sistemas Operativos instalan sus propias rutinas de servicio, cuyo comportamiento puede diferir. Véase por ejemplo, el epígrafe El teclado en Linux ( 7.1.2b).
§4 Búfer del teclado
El búfer del teclado es un área de 32 bytes de RAM en las direcciones 41Eh-43Dh (memoria de datos de la ROM BIOS 4.3). Puesto que se originan 2 byte-codes por cada código de exploración, es posible almacenar un máximo de 16 pulsaciones, aunque en realidad solo se aprovechan 15. La posición 16 contiene información especial que, como veremos enseguida, es necesaria para el esquema de funcionamiento adoptado.
El búfer tiene una organización circular (FIFO) y es manejado en base a los valores de dos punteros; el puntero de inicio, almacenado en las direcciones 41Ah-41Bh, señala la dirección de inicio, y el puntero de cola, almacenado en las direcciones 41Ch-41Dh, señala la dirección del final [6]. El puntero de inicio señala siempre la posición del primer carácter del búfer (en cualquiera de las 15 posiciones posibles). En el momento inicial, cuando el búfer está vacío, el puntero de cola apunta al mismo sitio que el de inicio. Cuando se van añadiendo byte-codes, el puntero de cola va señalando posiciones sucesivas (de dirección creciente), hasta que se alcanza la posición superior, empezándose entonces por la dirección inferior del búfer. Cuando se alcanza la posición de inicio, el búfer está lleno y se rechazan los caracteres siguientes (algunos Sistemas señalan esta circunstancia mediante un pitido en el altavoz del equipo).
Nota: La interrupción 9, producida por la pulsación de una tecla, invoca un servicio de teclado que podríamos considerar básico. Como hemos visto, su trabajo consiste en traducir los Scan-codes recibidos en byte-codes situados en el búfer de teclado, pero no es la única interrupción que proporciona servicios de este tipo. En el capítulo siguiente veremos que existen otras que complementan el manejo de la información proveniente de este periférico.
§5 Bytes de estado
Además de las teclas pulsadas, la rutina de servicio BIOS mantiene en las direcciones 417h y 418h (zona de memoria de la ROM BIOS), dos bytes con información importante sobre el estado del teclado. Son los denominados bytes de estado, cuyo contenido se muestra en la tabla adjunta.
Dirección |
bits 76543210 |
Significado |
417h |
X....... .X...... ..X..... ...X.... ....X... .....X.. ......X. .......X |
Estado de inserción: 1 = activo; 0 = inactivo Bloqueo de mayúsculas: 1 = activo; 0 = inactivo Bloqueo numérico ("Num lock"): 1 = activo; 0 = inactivo Bloqueo de desplazamiento ("Scroll"): 1 = activo; 0 = inactivo Alt Shift: 1 = activo (Alt pulsada); 0 = inactivo Ctrl Shift: 1 = activo (Ctrl pulsada); 0 = inactivo Shift izquierdo: 1 = activo (pulsado); 0 = inactivo Shift derecho: 1 = activo (pulsado); 0 = inactivo |
418h |
X....... .X...... ..X..... ...X.... ....X... .....X.. ......X. .......X |
1 = Tecla [Ins] presionada 1 = Bloqueo de mayúsculas presionada 1 = Bloqueo numérico presionada Estado de bloqueo ( 7.1b); 1 = activo; 0 = inactivo 1 = Sonido de teclado del PCjr activo 1 = Click activo en el PCjr. No utilizado No utilizado |
Nota: Los programas de diagnóstico del teclado suelen incluir una secuencia que escribe sucesivamente valores 0 y 1en los bits 4, 5 y 6 del primer byte de estado, con lo que las luces de bloqueo de desplazamiento, de mayúsculas y de bloqueo numérico del teclado, se encienden y apagan sucesivamente.
§6 Repetición de teclas.
Después de pulsada una tecla, si no se suelta en un lapso de 0.5 segundos (retardo de la repetición), el chip de teclado genera automáticamente la acción de repetición con una cadencia de 10 veces por segundo (velocidad de repetición). Esta repetición es denominada "Typematic" por IBM, y es tratada de forma inteligente por la interrupción 9. En caso de que se trate de una tecla normal, una "A" por ejemplo, la BIOS creará una serie de Aes que serán pasadas al buffer de teclado para cualquier programa que necesite leerlas. Sin embargo, si se mantiene pulsada la tecla "Shift", no se generará esta repetición, simplemente se interpretará que la tecla está pulsada. El sistema puede incluso detectar si la sucesión de caracteres son resultado de la acción repetida sobre la tecla, o de una pulsación prolongada, porque en este último caso faltan los códigos intermedios de liberación de tecla.
Nota: Aparte de las formas que se citan a continuación, las características de esta repetición, velocidad e intervalo inicial, pueden ser establecidas de varias formas en los sistemas modernos: Mediante el programa de "Setup" de la BIOS y mediante un servicio de esta que puede ser invocado por cualquier aplicación (7.1.2).
§6.1 Cambiar repetición de teclas en MS DOS
El retardo y la velocidad de repetición de teclas pueden ser establecidas en MS DOS mediante el comando MODE. La sintaxis es la siguiente:
MODE CON[:] [RATE=r DELAY=d]
Parámetros
- CON[:] Se refiere al teclado (el comando MODE puede tener otros usos).
- RATE=r Especifica la velocidad de repetición de un carácter en la pantalla cuando se mantenga presionada una tecla. Son valores aceptados para r entre 1 y 32. Estos valores equivalen aproximadamente de 2 a 30 caracteres por segundo. El valor predeterminado es 20 para teclados compatibles con IBM AT y 21 para los teclados compatibles con IBM PS/2. Si define una velocidad también tendrá que definir el retardo.
- DELAY=d Especifica el tiempo que deberá transcurrir (después de mantener presionada una tecla) antes de que MS-DOS inicie la repetición del carácter. Los valores aceptados para d son 1, 2, 3 y 4 (que representan 0,25; 0,50; 0,75 y 1 segundo, respectivamente). El valor predeterminado es 2. Si establece el retardo, también tendrá que establecer la velocidad.
§6.2 Cambiar repetición de teclas en MS Windows
El Sistema MS Windows 98 permite modificar fácilmente tanto el valor del retraso, como la velocidad de repetición en: Menú de inicio Configuración Panel de Control Teclado.
§6.3 Cambiar repetición de teclas en Linux
Aunque dedicamos un capítulo exclusivo a las peculiaridades del tratamiento del teclado en este Sistema Operativo ( 7.1.2b), adelantamos aquí que el comando kbdrate pemite modificar la velocidad de repetición y el retardo inicial. Generalmente los valores por defecto corresponden al estándar inicial IBM: 10 cps (caracteres por segundo) y 250 ms (milisegundos) respectivamente.
§7 Webografía
- Keyboard scancodes de Andries Brouwer www.win.tue.nl
[1] Al contrario de lo que ocurre con otros dispositivos. Por ejemplo, la pantalla, el sincronismo de la comunicación entre el teclado y la placa, hace necesario enviar una señal de sincronización CLK que se obtiene del reloj del sistema y se prolonga hasta el teclado (una fracción de la frecuencia del bus externo 2; unos 10 KHz). Además, desde el principio el teclado está diseñado para que su energía de funcionamiento se obtenga de la placa-base, por lo que también existe una señal de alimentación (+5 V. cc) en el cable.
[2] Generalmente los programas de usuario no utilizan estas diferencias, pero los programas de diagnóstico las discriminan y permiten detectar cual de las teclas duplicada ha sido pulsada.
[3] El carácter es el que aparece sobre la tecla en un teclado USA estándar. Cuando se trata de un carácter especial (que suelen aparecer como símbolos -flechas- o abreviaturas en las teclas) se ha recurrido a poner su nombre completo. Por ejemplo, Delete.
[4] Es frecuente que algunos textos se refieran a estos circuitos como controladores del teclado KBC ("Keyboard Controller"), cuando es el IC alojado en su interior (8048). En realidad, tanto el 8042 como el 8742, son la "interfaz" del dispositivo en la placa-base.
[5] Este diseño constituyó una novedad, dado que en la era pre-PC, los más frecuente era que los teclados generaran directamente el código ASCII de la tecla pulsada. Solo los caracteres ASCII estaban presentes en estos teclados pensados exclusivamente para el inglés-americano.
[6] Aunque los punteros son de 2 Bytes de largo, solo se utiliza el inferior (el menos significativo).
[7] Mediante los dispositivos adecuados, una sola pantalla, ratón y teclado pueden ser utilizados (alternativamente) para atender varios sistemas.