Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL v3 (V3L10, Win32)
PowerCOBOL v3 (V3L10, Win32) IDE Freeware compatible con Windows 7/8/10/11
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Control de teclas pulsadas Begoguay PowerCOBOL (ActiveX, v4 - v11) 13 2 de septiembre de 2024 17:07
[Sintaxis] Table: Control de teclas pulsadas (SHIFT+TAB) Begoguay PowerCOBOL (ActiveX, v4 - v11) 0 15 de julio de 2020 18:23
[Sintaxis] Teclas de desplazamiento Josber PowerCOBOL (ActiveX, v4 - v11) 6 1 de mayo de 2020 14:09
[Duda] Teclas de Funcion F13 - F24 jotica PowerCOBOL (ActiveX, v4 - v11) 6 8 de mayo de 2017 12:48
[Sintaxis] Detectar la inactividad en un Form Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 4 16 de julio de 2016 14:04

Respuesta

  #11
Antiguo 5 de junio de 2016, 12:53
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 20.09.2026 13:24
Posts Posts: 357
Likes enviados Enviados: 29
Likes recibidos Recibidos: 157

Olá,

encontrei uma possível solução


Código COBOL:
  1.  ENVIRONMENT DIVISION.
  2.  DATA        DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 INDICEKEY       PIC 9(03) VALUE 1.
  5.  01 keyBoard.
  6.     03 aKeyCode          PIC S9(09) COMP-5 VALUE 0.
  7.     03 keys PIC X(256).
  8.  
  9.  
  10.  
  11.  PROCEDURE   DIVISION.
  12.  
  13.      MOVE   0           TO  aKeyCode
  14.  
  15.      CALL  "GetKeyState"  WITH STDCALL  USING aKeyCode
  16.  
  17.      MOVE SPACES  TO  keys
  18.  
  19.      CALL   "GetKeyboardState"  WITH STDCALL  USING keys
  20.  
  21.      IF keys(38:1) > X"01"
  22.         DISPLAY "LEFT"
  23.      END-IF
  24.  
  25.      IF keys(39:1)  > X"01"
  26.         DISPLAY "UP"
  27.      END-IF
  28.  
  29.  
  30.      IF keys(40:1) > X"01"
  31.         DISPLAY "RIGHT"
  32.      END-IF
  33.  
  34.      IF keys(41:1) > X"01"
  35.         DISPLAY "DOWN"
  36.      END-IF

Agora posso terminar o jogo

Gracias, Emerson
Eslopes is offline   Responder Con Cita
  #12
Antiguo 5 de junio de 2016, 16:32
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Eslopes, para qué haces la llamada a "GetKeyState" si no usas su retorno después?



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #13
Antiguo 5 de junio de 2016, 17:43
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 20.09.2026 13:24
Posts Posts: 357
Likes enviados Enviados: 29
Likes recibidos Recibidos: 157

Olá,

de acordo com o post do forum abaixo, nem sempre o Windows faz um scan das teclas, então GetKeyState força este scan.


Cita:
I'v been using GetAsyncKeyState quite extensively without any issues. But if you follow the news groups, you'll realize that GetKeyboardState does have a quirk which is really not identified in the MS docs. The quirk is that the message processing can go out of synch based on how the messages are processed. In other words, Windows can sometimes avoid updating the keystate buffer if for some unknown reason it feels that updating the buffer is not necessary at times. Thus, the key state buffer may not be up to date and in sych with the input message queue. The news group folks recommend calling GetKeyState prior to calling GetKeyboardState to eliminate this potential problem.

GetKeyboardState() problem


Saludos, Emerson
Eslopes is offline   Responder Con Cita
  #14
Antiguo 7 de junio de 2016, 13:59
Jovimabo
Forero Junior
Última Actividad 26.06.2016 16:43
Posts Posts: 6
Likes enviados Enviados: 6
Likes recibidos Recibidos: 0

Hola, no estoy seguro si esta subrutina te pueda servir
Código:
CBL_READ_SCR_KEY
Consultala en el manual de CBL Subroutines
User’s Guide capitulo 11
Esto es de NetCOBOL CBL routines.
Jovimabo is offline   Responder Con Cita
  #15
Antiguo 7 de junio de 2016, 14:21
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 20.09.2026 13:24
Posts Posts: 357
Likes enviados Enviados: 29
Likes recibidos Recibidos: 157

Olá, esta era minha primeira opção, mas o PowerCobol 3 não tem suporte para esta rotina, apenas a versão 4 em diante.

Todavia, a chamada à API que usei está funcionando perfeitamente. Ela poderia inclusive ser usada para criar uma rotina de entrada de dados, substituindo o uso de Textbox (pense no caso de uma aplicação de POS - Point Of Sale).

Saludos, Emerson
Eslopes is offline   Responder Con Cita
  #16
Antiguo 7 de junio de 2016, 17:15
Eslopes
Creador de
PowerRustCOBOL
Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por ámplios conocimientos en la materia Concurso: Tercer puesto: Ganador/a del Tercer puesto en un concurso - Issue reason: Juego  Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras 
Última Actividad 20.09.2026 13:24
Posts Posts: 357
Likes enviados Enviados: 29
Likes recibidos Recibidos: 157

Uma outra coisa, a API detecta (e retorna) múltiplas teclas pressionadas, incluindo se estão em CAPS LOCK, ou se CONTROL, SHIFT ou mesmo se as teclas do mouse foram pressionadas. É um muito interessante mesmo.

Saludos, Emerson
Eslopes is offline   Responder Con Cita
  #17
Antiguo 9 de junio de 2016, 16:37
Adrianeloy
Forero Junior
Última Actividad 24.11.2020 17:31
Posts Posts: 39
Likes enviados Enviados: 29
Likes recibidos Recibidos: 34

Eslopes, tu rutina funciona a la perfección, aqui estan los codigos del resto de las teclas...
NOTA: para detectar una tecla con el ejemplo de Eslopes, debemos sumarle uno al código.

Código:
Código	Tecla
1	LButton
2	RButton
3	Cancel 
4	Mbutton (no contigüo a L & RBUTTON)
8	Back   
9	Tab    
12	Clear  
13	Return 
16	Shift  
17	Control
18	Menu   
19	Pause  
20	Capital
27	Escape 
32	Space  
33	Prior  
34	Next   
35	End    
36	Home   
37	Left   
38	Up     
39	Right  
40	Down   
41	Select 
42	Print  
43	Execute
44	SnapShot
44	Copy (no usada x teclado)
45	Insert 
46	Delete 
47	Help   
65-90	Teclas 'A' hasta 'Z'
97-122	Teclas 'a' hasta 'z'
45-57	Teclas '0' hasta '9'
96	NumPad0
97	NumPad1
98	NumPad2
99	NumPad3
100	NumPad4
101	NumPad5
102	NumPad6
103	NumPad7
104	NumPad8
105	NumPad9
106	Multiply
107	Add    
108	Separator
109	Subtract
110	Decimal
111	Divide 
112	F1     
113	F2     
114	F3     
115	F4     
116	F5     
117	F6     
118	F7     
119	F8     
120	F9     
121	F10    
122	F11    
123	F12    
124	F13    
125	F14    
126	F15    
127	F16    
128	F17    
129	F18    
130	F19    
131	F20    
132	F21    
133	F22    
134	F23    
135	F24    
144	NumLock
145	Scroll
Adrianeloy is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:39.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.