SlideShare una empresa de Scribd logo
1 de 21
Uso del Teclado
Programación 3D
Temática a tratar
 Introducción al dispositivo del
teclado.
 Mostrar como las teclas del teclado
pueden representarse mediante tipos
enumerados.
 Mostrar como un programa XNA
puede utilizar tanto el teclado como
el gamepad para controlar el juego.
XNA y el teclado
 El Xbox 360 no esta equipada con teclado.
 Es posible conectar un teclado a cualquier
puerto USB de la Xbox.
 Un juego para Windows siempre esta
provisto por un teclado.
 El teclado es utilizado de la misma manera
por una aplicación de juegos para la Xbox
360 o para Windows.
 No es posible utilizar un teclado para un
dispositivo Zune.
El teclado en programas XNA.
 El teclado es utilizado de una manera muy
similar al gamepad.
 Un juego puede decir si o no una tecla
particular es presionada o soltada.
 Las teclas no generan un carácter en si, el
juego puede leer el estatus de cualquier tecla.
 Todas la teclas en el teclado pueden ser
probadas.
 Las teclas Shift y Control tambien pueden ser
probadas
El tipo KeyboardState
 El estado de un teclado es representado por
una variable en XNA por el tipo KeyboardState.
 Este tipo provee los métodos que pueden ser
usados para encontrar si una tecla particular ha
sido presionada.
 Estos tienen una ligera diferencia de las formas
del GamePadState.
 Pero su funcionamiento tiene el mismo
principio.
Creando una variable KeyboardState
 El juego utiliza esta variable para
almacenar el estado del teclado.
 Esta luego utilizará los valores en esta
variable para que por medio del teclado
se pueda controlar el juego.
 La variable debe ser almacenad como
cualquier otra variable del programa.
 En este caso le hemos llamado keys.
KeyboardState keys;
Configurando la variable keys
 La clase Keyboard es parte del XNA y
provee un método llamado GetState que
lee el estado del teclado.
 No es necesario decirle a GetState cual
teclado leer, ya que el XNA solo soporta
un teclado.
 El método GetState tiene el objeto
KeyboardState que almacena el estado del
teclado en un instante dado
KeyboardState keys = Keyboard.GetState();
Probando la tecla presionada
 El método IsKeyDown es quien nos dice
que tecla ha sido presionada.
 El método retorna true si la tecla ha sido
presionada.
 El código anterior debe de incrementar el
color rojo si la tecla R es presionada.
 El programador puede identificar la tecla a
ser probada, usando un valor de la
enumeración keys
if (keys.IsKeyDown(Keys.R)) redIntensity++;
La enumeración Keys
 Los diseñadores de XNA han creado una enumeración,
la cual almacena valores que representan las teclas en
el teclado.
 Una enumeración es un tipo que puede almacenar un
conjunto particular de valores.
 Estas son utilizadas para ser usadas en una situación
especifica, donde solo queremos una variable para
almacenar valores particulares.
 Es posible crear nuestras propias enumeraciones para
manejar el estado del juego.
Enumeraciones y VS
 El VS tiene una
herramienta llamado
“Intellisense”, que puede
sugerir valores de una
enumeración que puede
ser usada.
 Esto hace mucho más fácil
para un programador
crear código correcto.
Uso de la tecla Scape para salir
 El proyecto creado puede detener su ejecución
si se presiona el botón Back.
 Xna provee un método llamado Exit para
detener la ejecución del juego.
 El programa anterior llama el método Exit
cuando la tecla Escape es presionada.
 Este sentencia controla el programa por medio
del teclado.
if (keys.IsKeyDown(Keys.Escape))
{
this.Exit();
}
Manejando el teclado y el gamepad
 Este código utiliza tanto el gamepad, Zune o el
teclado para controlar la intensidad del color rojo.
 El método Keyboard.GetState siempre retorna algo.
 Si no hay un teclado presente KeyboardState
retorna un valor que no hay teclas presionadas.
if (keys.IsKeyDown(Keys.R) ||
pad1.DPad.Right == ButtonState.Pressed ||
pad1.Buttons.B == ButtonState.Pressed)
{
redIntensity++;
}
Lógica avanzada
 Este código configura la intensidades a 0 si las
teclas Shift (ambas)son presionadas o si los botones
“shoulders” del gamepad son presionados.
 Se observan las diferentes combinaciones que
deben realizarse.
if ( (keys.IsKeyDown(Keys.LeftShift) &&
keys.IsKeyDown(Keys.RightShift)) ||
(pad1.Buttons.LeftShoulder == ButtonState.Pressed &&
pad1.Buttons.RightShoulder == ButtonState.Pressed))
{
redIntensity = 0;
greenIntensity = 0;
blueIntensity = 0;
}
Lógica avanzada
 Las dos condiciones son encerradas entre paréntesis
para decirle al compilador que ambas deben ser
evaluadas y luego combinadas usando el operador OR
 Los paréntesis trabajan de la misma manera que en la
aritmética.
if ( (keys.IsKeyDown(Keys.LeftShift) &&
keys.IsKeyDown(Keys.RightShift)) ||
(pad1.Buttons.LeftShoulder == ButtonState.Pressed &&
pad1.Buttons.RightShoulder == ButtonState.Pressed) )
{
redIntensity = 0;
greenIntensity = 0;
blueIntensity = 0;
}
Demostración
 Este programa implementa el color
utilizando diferentes tipos de
dispositivos de entrada.
Resumen
 El Framework del XNA provee un tipo llamado
KeyboardState para representar el estado del teclado en
un instante en particular.
 La clase Keyboard provee el método GetStatus el cual
retorna el valor de KeyboardState.
 El método GetState retorna un tipo de valor Keys para
identificar que tecla ha sido presionada.
 El valor de KeyboardState provee un método llamado
IsKeyDown, el cual nos dice que tecla en particular ha
sido presionada.
Verdadero o falso
 Un programa XNA puede manejar al
menos 4 teclados.
 El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
 El método GetState de la clase Keyboard
retorna el estado del teclado.
 El tipo Keys tiene un valor para cada
posible tecla del teclado.
Verdadero o falso
 Un programa XNA puede manejar al
menos 4 teclados.
 El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
 El método GetState de la clase Keyboard
retorna el estado del teclado.
 El tipo Keys tiene un valor para cada
posible tecla del teclado.
Verdadero o falso
 Un programa XNA puede manejar al
menos 4 teclados.
 El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
 El método GetState de la clase Keyboard
retorna el estado del teclado.
 El tipo Keys tiene un valor para cada
posible tecla del teclado.
Verdadero o falso
 Un programa XNA puede manejar al
menos 4 teclados.
 El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
 El método GetState de la clase Keyboard
retorna el estado del teclado.
 El tipo Keys tiene un valor para cada
posible tecla del teclado.
Verdadero o falso
 Un programa XNA puede manejar al
menos 4 teclados.
 El tipo KeyboardState puede almacenar
valores que representan el estado del
teclado.
 El método GetState de la clase Keyboard
retorna el estado del teclado.
 El tipo Keys tiene un valor para cada
posible tecla del teclado.

Más contenido relacionado

La actualidad más candente

Partes del Teclado y Funciones de las teclas
Partes del Teclado y Funciones de las teclasPartes del Teclado y Funciones de las teclas
Partes del Teclado y Funciones de las teclasValenLopez1305
 
Partes principales de un teclado
Partes principales de un tecladoPartes principales de un teclado
Partes principales de un tecladoLunaAscenzi
 
Partes principaless
Partes principalessPartes principaless
Partes principalessIaraGarayeta
 
Funciones del teclado
Funciones del tecladoFunciones del teclado
Funciones del tecladolaranapeluda
 
Teclado de la computadora
Teclado de la computadoraTeclado de la computadora
Teclado de la computadoraJuan Azzurro
 
El teclado stefano
El teclado stefanoEl teclado stefano
El teclado stefanostefanot
 
Patty
PattyPatty
Pattypemp
 
Teclado Multimedia y sus Partes
Teclado Multimedia y sus PartesTeclado Multimedia y sus Partes
Teclado Multimedia y sus PartesLuchiii3
 
Partes principales del teclado4
Partes principales del teclado4Partes principales del teclado4
Partes principales del teclado4LouJardin26
 
partes el teclado camila carabetta
partes  el teclado camila carabettapartes  el teclado camila carabetta
partes el teclado camila carabettacamila678
 

La actualidad más candente (16)

Partes del teclado
Partes del tecladoPartes del teclado
Partes del teclado
 
Partes del Teclado y Funciones de las teclas
Partes del Teclado y Funciones de las teclasPartes del Teclado y Funciones de las teclas
Partes del Teclado y Funciones de las teclas
 
Partes del teclado
Partes del tecladoPartes del teclado
Partes del teclado
 
Tutorial Game Maker segunda parte
Tutorial Game Maker segunda parteTutorial Game Maker segunda parte
Tutorial Game Maker segunda parte
 
Partes principales de un teclado
Partes principales de un tecladoPartes principales de un teclado
Partes principales de un teclado
 
Partes principaless
Partes principalessPartes principaless
Partes principaless
 
Funciones del teclado
Funciones del tecladoFunciones del teclado
Funciones del teclado
 
El teclado
El tecladoEl teclado
El teclado
 
Teclado de la computadora
Teclado de la computadoraTeclado de la computadora
Teclado de la computadora
 
El teclado stefano
El teclado stefanoEl teclado stefano
El teclado stefano
 
Patty
PattyPatty
Patty
 
Teclado
Teclado Teclado
Teclado
 
Teclado Multimedia y sus Partes
Teclado Multimedia y sus PartesTeclado Multimedia y sus Partes
Teclado Multimedia y sus Partes
 
Partes principales del teclado4
Partes principales del teclado4Partes principales del teclado4
Partes principales del teclado4
 
partes el teclado camila carabetta
partes  el teclado camila carabettapartes  el teclado camila carabetta
partes el teclado camila carabetta
 
El teclado damiani carolina
El teclado damiani carolinaEl teclado damiani carolina
El teclado damiani carolina
 

Destacado

Clave de acceso
Clave de accesoClave de acceso
Clave de accesoJuan Gomez
 
Ventanas recuperación de la contraseña
Ventanas recuperación de la contraseñaVentanas recuperación de la contraseña
Ventanas recuperación de la contraseñanancyjonson
 
Desarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft SilverlightDesarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft SilverlightChristian Strevel
 
Mac recuperación de disco duro
Mac recuperación de disco duroMac recuperación de disco duro
Mac recuperación de disco duromatsuzakaa
 
Administrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipoAdministrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipoTania Parra Soto
 

Destacado (8)

Clave de acceso
Clave de accesoClave de acceso
Clave de acceso
 
Ventanas recuperación de la contraseña
Ventanas recuperación de la contraseñaVentanas recuperación de la contraseña
Ventanas recuperación de la contraseña
 
Gpg by d7n0
Gpg by d7n0Gpg by d7n0
Gpg by d7n0
 
Desarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft SilverlightDesarrollando Controles AJAX con Microsoft Silverlight
Desarrollando Controles AJAX con Microsoft Silverlight
 
Mac recuperación de disco duro
Mac recuperación de disco duroMac recuperación de disco duro
Mac recuperación de disco duro
 
Seguridades asp.Net
Seguridades asp.NetSeguridades asp.Net
Seguridades asp.Net
 
Administrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipoAdministrar cuentas de usuario y equipo
Administrar cuentas de usuario y equipo
 
Como empezar leopard
Como empezar leopardComo empezar leopard
Como empezar leopard
 

Similar a Presentacion321 (18)

Presentacion610
Presentacion610Presentacion610
Presentacion610
 
Manual de comandos de un teclado
Manual de comandos de un tecladoManual de comandos de un teclado
Manual de comandos de un teclado
 
Bruno segú informática-propiedades del teclado
Bruno segú informática-propiedades del tecladoBruno segú informática-propiedades del teclado
Bruno segú informática-propiedades del teclado
 
Manual regletas (1)
Manual regletas (1)Manual regletas (1)
Manual regletas (1)
 
Arduino: Teclado matricial
Arduino: Teclado matricialArduino: Teclado matricial
Arduino: Teclado matricial
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Presentacion322
Presentacion322Presentacion322
Presentacion322
 
Presentacion322
Presentacion322Presentacion322
Presentacion322
 
Array de Control
Array de ControlArray de Control
Array de Control
 
Array de Control
Array de ControlArray de Control
Array de Control
 
Tutorial p seint
Tutorial p seintTutorial p seint
Tutorial p seint
 
Cds centro de sistemas de uraba
Cds centro de sistemas de urabaCds centro de sistemas de uraba
Cds centro de sistemas de uraba
 
Arduino: Teclado matricial
Arduino: Teclado matricialArduino: Teclado matricial
Arduino: Teclado matricial
 
EL TECLADO
EL TECLADOEL TECLADO
EL TECLADO
 
EL TECLADO
 EL TECLADO  EL TECLADO
EL TECLADO
 
ELTECLADO
ELTECLADOELTECLADO
ELTECLADO
 
EL TECLADO
EL TECLADOEL TECLADO
EL TECLADO
 
L.h y d.t
L.h y d.tL.h y d.t
L.h y d.t
 

Más de Titiushko Jazz

Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)
Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)
Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)Titiushko Jazz
 
Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)
Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)
Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)Titiushko Jazz
 
Unidad vii esp parte 2 introduccion a data warehouse y datamining
Unidad vii esp parte 2 introduccion a data warehouse y dataminingUnidad vii esp parte 2 introduccion a data warehouse y datamining
Unidad vii esp parte 2 introduccion a data warehouse y dataminingTitiushko Jazz
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlTitiushko Jazz
 
Tarea pronosticos eily
Tarea pronosticos eilyTarea pronosticos eily
Tarea pronosticos eilyTitiushko Jazz
 
Proyecto teórico práctico
Proyecto teórico prácticoProyecto teórico práctico
Proyecto teórico prácticoTitiushko Jazz
 

Más de Titiushko Jazz (20)

Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)
Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)
Unidad vii esp parte 3 clase de inteligencia de negocios (datawarehouse)
 
Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)
Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)
Unidad vii esp parte 3 clase de datawarehouse ( ing. doño)
 
Unidad vii esp parte 2 introduccion a data warehouse y datamining
Unidad vii esp parte 2 introduccion a data warehouse y dataminingUnidad vii esp parte 2 introduccion a data warehouse y datamining
Unidad vii esp parte 2 introduccion a data warehouse y datamining
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
 
Unidad ii esp parte 2
Unidad ii esp parte 2Unidad ii esp parte 2
Unidad ii esp parte 2
 
Unidad ii esp parte 1
Unidad ii esp parte 1Unidad ii esp parte 1
Unidad ii esp parte 1
 
Unidad i esp parte 2
Unidad i esp parte 2Unidad i esp parte 2
Unidad i esp parte 2
 
Unidad i esp parte 1
Unidad i esp parte 1Unidad i esp parte 1
Unidad i esp parte 1
 
Tarea pronosticos eily
Tarea pronosticos eilyTarea pronosticos eily
Tarea pronosticos eily
 
Sociedades limitadas
Sociedades limitadasSociedades limitadas
Sociedades limitadas
 
Rhu
RhuRhu
Rhu
 
Qué es un proyecto
Qué es un proyectoQué es un proyecto
Qué es un proyecto
 
Proyecto teórico práctico
Proyecto teórico prácticoProyecto teórico práctico
Proyecto teórico práctico
 
Presentacion1630
Presentacion1630Presentacion1630
Presentacion1630
 
Presentacion1410
Presentacion1410Presentacion1410
Presentacion1410
 
Presentacion1310
Presentacion1310Presentacion1310
Presentacion1310
 
Presentacion1210
Presentacion1210Presentacion1210
Presentacion1210
 
Presentacion1220
Presentacion1220Presentacion1220
Presentacion1220
 
Presentacion1001
Presentacion1001Presentacion1001
Presentacion1001
 
Presentacion810
Presentacion810Presentacion810
Presentacion810
 

Presentacion321

  • 2. Temática a tratar  Introducción al dispositivo del teclado.  Mostrar como las teclas del teclado pueden representarse mediante tipos enumerados.  Mostrar como un programa XNA puede utilizar tanto el teclado como el gamepad para controlar el juego.
  • 3. XNA y el teclado  El Xbox 360 no esta equipada con teclado.  Es posible conectar un teclado a cualquier puerto USB de la Xbox.  Un juego para Windows siempre esta provisto por un teclado.  El teclado es utilizado de la misma manera por una aplicación de juegos para la Xbox 360 o para Windows.  No es posible utilizar un teclado para un dispositivo Zune.
  • 4. El teclado en programas XNA.  El teclado es utilizado de una manera muy similar al gamepad.  Un juego puede decir si o no una tecla particular es presionada o soltada.  Las teclas no generan un carácter en si, el juego puede leer el estatus de cualquier tecla.  Todas la teclas en el teclado pueden ser probadas.  Las teclas Shift y Control tambien pueden ser probadas
  • 5. El tipo KeyboardState  El estado de un teclado es representado por una variable en XNA por el tipo KeyboardState.  Este tipo provee los métodos que pueden ser usados para encontrar si una tecla particular ha sido presionada.  Estos tienen una ligera diferencia de las formas del GamePadState.  Pero su funcionamiento tiene el mismo principio.
  • 6. Creando una variable KeyboardState  El juego utiliza esta variable para almacenar el estado del teclado.  Esta luego utilizará los valores en esta variable para que por medio del teclado se pueda controlar el juego.  La variable debe ser almacenad como cualquier otra variable del programa.  En este caso le hemos llamado keys. KeyboardState keys;
  • 7. Configurando la variable keys  La clase Keyboard es parte del XNA y provee un método llamado GetState que lee el estado del teclado.  No es necesario decirle a GetState cual teclado leer, ya que el XNA solo soporta un teclado.  El método GetState tiene el objeto KeyboardState que almacena el estado del teclado en un instante dado KeyboardState keys = Keyboard.GetState();
  • 8. Probando la tecla presionada  El método IsKeyDown es quien nos dice que tecla ha sido presionada.  El método retorna true si la tecla ha sido presionada.  El código anterior debe de incrementar el color rojo si la tecla R es presionada.  El programador puede identificar la tecla a ser probada, usando un valor de la enumeración keys if (keys.IsKeyDown(Keys.R)) redIntensity++;
  • 9. La enumeración Keys  Los diseñadores de XNA han creado una enumeración, la cual almacena valores que representan las teclas en el teclado.  Una enumeración es un tipo que puede almacenar un conjunto particular de valores.  Estas son utilizadas para ser usadas en una situación especifica, donde solo queremos una variable para almacenar valores particulares.  Es posible crear nuestras propias enumeraciones para manejar el estado del juego.
  • 10. Enumeraciones y VS  El VS tiene una herramienta llamado “Intellisense”, que puede sugerir valores de una enumeración que puede ser usada.  Esto hace mucho más fácil para un programador crear código correcto.
  • 11. Uso de la tecla Scape para salir  El proyecto creado puede detener su ejecución si se presiona el botón Back.  Xna provee un método llamado Exit para detener la ejecución del juego.  El programa anterior llama el método Exit cuando la tecla Escape es presionada.  Este sentencia controla el programa por medio del teclado. if (keys.IsKeyDown(Keys.Escape)) { this.Exit(); }
  • 12. Manejando el teclado y el gamepad  Este código utiliza tanto el gamepad, Zune o el teclado para controlar la intensidad del color rojo.  El método Keyboard.GetState siempre retorna algo.  Si no hay un teclado presente KeyboardState retorna un valor que no hay teclas presionadas. if (keys.IsKeyDown(Keys.R) || pad1.DPad.Right == ButtonState.Pressed || pad1.Buttons.B == ButtonState.Pressed) { redIntensity++; }
  • 13. Lógica avanzada  Este código configura la intensidades a 0 si las teclas Shift (ambas)son presionadas o si los botones “shoulders” del gamepad son presionados.  Se observan las diferentes combinaciones que deben realizarse. if ( (keys.IsKeyDown(Keys.LeftShift) && keys.IsKeyDown(Keys.RightShift)) || (pad1.Buttons.LeftShoulder == ButtonState.Pressed && pad1.Buttons.RightShoulder == ButtonState.Pressed)) { redIntensity = 0; greenIntensity = 0; blueIntensity = 0; }
  • 14. Lógica avanzada  Las dos condiciones son encerradas entre paréntesis para decirle al compilador que ambas deben ser evaluadas y luego combinadas usando el operador OR  Los paréntesis trabajan de la misma manera que en la aritmética. if ( (keys.IsKeyDown(Keys.LeftShift) && keys.IsKeyDown(Keys.RightShift)) || (pad1.Buttons.LeftShoulder == ButtonState.Pressed && pad1.Buttons.RightShoulder == ButtonState.Pressed) ) { redIntensity = 0; greenIntensity = 0; blueIntensity = 0; }
  • 15. Demostración  Este programa implementa el color utilizando diferentes tipos de dispositivos de entrada.
  • 16. Resumen  El Framework del XNA provee un tipo llamado KeyboardState para representar el estado del teclado en un instante en particular.  La clase Keyboard provee el método GetStatus el cual retorna el valor de KeyboardState.  El método GetState retorna un tipo de valor Keys para identificar que tecla ha sido presionada.  El valor de KeyboardState provee un método llamado IsKeyDown, el cual nos dice que tecla en particular ha sido presionada.
  • 17. Verdadero o falso  Un programa XNA puede manejar al menos 4 teclados.  El tipo KeyboardState puede almacenar valores que representan el estado del teclado.  El método GetState de la clase Keyboard retorna el estado del teclado.  El tipo Keys tiene un valor para cada posible tecla del teclado.
  • 18. Verdadero o falso  Un programa XNA puede manejar al menos 4 teclados.  El tipo KeyboardState puede almacenar valores que representan el estado del teclado.  El método GetState de la clase Keyboard retorna el estado del teclado.  El tipo Keys tiene un valor para cada posible tecla del teclado.
  • 19. Verdadero o falso  Un programa XNA puede manejar al menos 4 teclados.  El tipo KeyboardState puede almacenar valores que representan el estado del teclado.  El método GetState de la clase Keyboard retorna el estado del teclado.  El tipo Keys tiene un valor para cada posible tecla del teclado.
  • 20. Verdadero o falso  Un programa XNA puede manejar al menos 4 teclados.  El tipo KeyboardState puede almacenar valores que representan el estado del teclado.  El método GetState de la clase Keyboard retorna el estado del teclado.  El tipo Keys tiene un valor para cada posible tecla del teclado.
  • 21. Verdadero o falso  Un programa XNA puede manejar al menos 4 teclados.  El tipo KeyboardState puede almacenar valores que representan el estado del teclado.  El método GetState de la clase Keyboard retorna el estado del teclado.  El tipo Keys tiene un valor para cada posible tecla del teclado.