Esempio n. 1
0
/* This function exclusively used in keyboard redefinition */
void findkey(int kn)
{
  int k=0,i,j;
  bool f=FALSE;
  do {
    for (i=130;i<256 && !f;i++)
      if (_kernel_osbyte(129,i,255)&0xff==0xff)
        f=TRUE;
    gretrace();
    if (kbhit())
      k=getkey();
  } while (k==0 && !f);
  j=i-1;
  if (k==0) k=-2;
  if (k>='a' && k<='z')
    k-='a'-'A';
  for (i=0;i<5;i++)
    keycodes[kn][i]=-2;
  if (kn>9)
    i=0;
  else {
    i=2;
    keycodes[kn][0]=j;
    keycodes[kn][1]=0;
  }
  keycodes[kn][i++]=k;
  if (k>='A' && k<='Z') {
    keycodes[kn][i++]=k-('A'-'a'); /* lower case */
    keycodes[kn][i++]=k-'@'; /* ctrl code */
  }
  krdf[kn]=TRUE;
}
void RISCOS_ExitTask()
{
	_kernel_swi_regs regs;

    if (stored_mode == -1)
    {
       _kernel_osbyte(106,1,0);
    }

	
	RISCOS_RestoreWimpMode();

	
   	regs.r[0] = task_handle;
   	regs.r[1] = (unsigned int)0x4b534154;
   	_kernel_swi(Wimp_CloseDown, &regs, &regs);
	task_handle = 0;
}
Esempio n. 3
0
void RISCOS_ExitTask()
{
	_kernel_swi_regs regs;

    if (stored_mode == -1)
    {
       /* Ensure cursor is put back to standard pointer shape if
          we have been running in a window */
       _kernel_osbyte(106,1,0);
    }

	/* Ensure we end up back in the wimp */
	RISCOS_RestoreWimpMode();

	/* Neatly exit the task */
   	regs.r[0] = task_handle;
   	regs.r[1] = (unsigned int)0x4b534154;
   	_kernel_swi(Wimp_CloseDown, &regs, &regs);
	task_handle = 0;
}