Jump to content

KbdXlate (FAPI): Difference between revisions

From EDM2
Created page with "==Description== This call translates scan codes with shift states into ASCII codes. ==Syntax== <PRE> KbdXlate (XlateRecord, KbdHandle) </PRE> ==Parameters== ; XlateRec..."
 
Ak120 (talk | contribs)
mNo edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Description==
This call translates scan codes with shift states into ASCII codes.
This call translates scan codes with shift states into ASCII codes.


==Syntax==
==Syntax==
<PRE>
  KbdXlate (XlateRecord, KbdHandle)
  KbdXlate


    (XlateRecord, KbdHandle)
</PRE>
==Parameters==
==Parameters==
; XlateRecord (PKBDTRANS) - input : Address of the translation record structure:
;XlateRecord (PKBDTRANS) - input: Address of the translation record structure:
 
::chardata (KBDKEYINFO): Character data information structure as defined in KbdCharIn call.
chardata (KBDKEYINFO) : Character data information structure as defined in KbdCharIn call.  
::kbdflag (USHORT): See the KbdDDFlagWord call in the "Keyboard Device Driver" section of ''IBM Operating System/2 Version 1.2 I/O Subsystems And Device Support Volume 1''.
 
::xlate (USHORT): Translation flag:
kbdflag (USHORT) : See the KbdDDFlagWord call in the "Keyboard Device Driver" section of IBM Operating System/2 Version 1.2 I/O Subsystems And Device Support Volume 1.  
:::0 - Translation incomplete.
 
:::1 - Translation complete.
xlate (USHORT) : Translation flag:
::xlatestate1 (USHORT): Identifies the state of translation across successive calls; initially the value should be zero. It may take several calls to this function to complete a character. The value should not be changed unless a new translation is required, that is, reset value to zero.
 
::xlatestate2 (USHORT): See description for xlatestate1.
'''Value            Definition'''
;KbdHandle (HKBD) - input: Default keyboard or the logical keyboard.  
0           Translation incomplete.  
1           Translation complete.  
 
xlatestate1 (USHORT) : Identifies the state of translation across successive calls; initially the value should be zero. It may take several calls to this function to complete a character. The value should not be changed unless a new translation is required, that is, reset value to zero.  
 
xlatestate2 (USHORT) : See description for xlatestate1.  
 
; KbdHandle (HKBD) - input : Default keyboard or the logical keyboard.  


==Return Code==
==Return Code==
rc (USHORT) - return
;rc (USHORT) - return:Return code descriptions are:
 
*0 NO_ERROR
Return code descriptions are:
*439 ERROR_KBD_INVALID_HANDLE
 
*445 ERROR_KBD_FOCUS_REQUIRED
* 0         NO_ERROR  
*447 ERROR_KBD_KEYBOARD_BUSY
* 439       ERROR_KBD_INVALID_HANDLE  
*464 ERROR_KBD_DETACHED
* 445       ERROR_KBD_FOCUS_REQUIRED  
*504 ERROR_KBD_EXTENDED_SG
* 447       ERROR_KBD_KEYBOARD_BUSY  
* 464       ERROR_KBD_DETACHED  
* 504       ERROR_KBD_EXTENDED_SG


==Remarks==
==Remarks==
Line 44: Line 29:
The Xlatestate1 and Xlatestate2 are for use by the keyboard translation routines. These fields are reserved and must only be accessed by the caller prior to starting a translation sequence and then they must be set to zero. The KbdXlate function is intended to be used for translating a particular scan code for a given shift state. The KbdXlate function is not intended to be a replacement for the OS/2 system keystroke translation function.  
The Xlatestate1 and Xlatestate2 are for use by the keyboard translation routines. These fields are reserved and must only be accessed by the caller prior to starting a translation sequence and then they must be set to zero. The KbdXlate function is intended to be used for translating a particular scan code for a given shift state. The KbdXlate function is not intended to be a replacement for the OS/2 system keystroke translation function.  


==Example Code==
==Bindings==
===C Binding===
===C===
<PRE>
<PRE>
typedef struct _KBDTRANS {   /* kbxl */
typedef struct _KBDTRANS { /* kbxl */
   UCHAR      chChar;         /* ASCII character code */
   UCHAR      chChar;       /* ASCII character code */
   UCHAR      chScan;         /* Scan code */
   UCHAR      chScan;       /* Scan code */
   UCHAR      fbStatus;       /* State of the character */
   UCHAR      fbStatus;     /* State of the character */
   UCHAR      bNlsShift;       /* Shift status (reserved set to zero) */
   UCHAR      bNlsShift;   /* Shift status (reserved set to zero) */
   USHORT    fsState;         /* Shift state */
   USHORT    fsState;     /* Shift state */
   ULONG      time;
   ULONG      time;
   USHORT    fsDD;
   USHORT    fsDD;
Line 64: Line 49:
USHORT  rc = KbdXlate(XlateRecord, KbdHandle);
USHORT  rc = KbdXlate(XlateRecord, KbdHandle);


PKBDTRANS       XlateRecord;  /* Translation Record */
PKBDTRANS XlateRecord;  /* Translation Record */
HKBD             KbdHandle;    /* Keyboard handle */
HKBD       KbdHandle;    /* Keyboard handle */


USHORT           rc;            /* return code */
USHORT     rc;            /* return code */
</PRE>
</PRE>


===MASM Binding===
===MASM===
<PRE>
<PRE>
KBDTRANS struc
KBDTRANS struc
Line 94: Line 79:
Returns WORD
Returns WORD
</PRE>
</PRE>
==Related Functions==
*


[[Category:The OS/2 API Project]]
[[Category:Kbd]]

Latest revision as of 17:20, 11 December 2019

This call translates scan codes with shift states into ASCII codes.

Syntax

KbdXlate (XlateRecord, KbdHandle)

Parameters

XlateRecord (PKBDTRANS) - input
Address of the translation record structure:
chardata (KBDKEYINFO): Character data information structure as defined in KbdCharIn call.
kbdflag (USHORT): See the KbdDDFlagWord call in the "Keyboard Device Driver" section of IBM Operating System/2 Version 1.2 I/O Subsystems And Device Support Volume 1.
xlate (USHORT): Translation flag:
0 - Translation incomplete.
1 - Translation complete.
xlatestate1 (USHORT): Identifies the state of translation across successive calls; initially the value should be zero. It may take several calls to this function to complete a character. The value should not be changed unless a new translation is required, that is, reset value to zero.
xlatestate2 (USHORT): See description for xlatestate1.
KbdHandle (HKBD) - input
Default keyboard or the logical keyboard.

Return Code

rc (USHORT) - return
Return code descriptions are:
  • 0 NO_ERROR
  • 439 ERROR_KBD_INVALID_HANDLE
  • 445 ERROR_KBD_FOCUS_REQUIRED
  • 447 ERROR_KBD_KEYBOARD_BUSY
  • 464 ERROR_KBD_DETACHED
  • 504 ERROR_KBD_EXTENDED_SG

Remarks

It may take several calls to complete a translation because of accent key combinations, or other complex operations.

The Xlatestate1 and Xlatestate2 are for use by the keyboard translation routines. These fields are reserved and must only be accessed by the caller prior to starting a translation sequence and then they must be set to zero. The KbdXlate function is intended to be used for translating a particular scan code for a given shift state. The KbdXlate function is not intended to be a replacement for the OS/2 system keystroke translation function.

Bindings

C

typedef struct _KBDTRANS { /* kbxl */
  UCHAR      chChar;       /* ASCII character code */
  UCHAR      chScan;       /* Scan code */
  UCHAR      fbStatus;     /* State of the character */
  UCHAR      bNlsShift;    /* Shift status (reserved set to zero) */
  USHORT     fsState;      /* Shift state */
  ULONG      time;
  USHORT     fsDD;
  USHORT     fsXlate;
  USHORT     fsShift;
  USHORT     sZero;
} KBDTRANS;

#define INCL_KBD

USHORT  rc = KbdXlate(XlateRecord, KbdHandle);

PKBDTRANS  XlateRecord;   /* Translation Record */
HKBD       KbdHandle;     /* Keyboard handle */

USHORT     rc;            /* return code */

MASM

KBDTRANS struc
  kbxl_chChar    db  ? ;ASCII character code
  kbxl_chScan    db  ? ;scan code
  kbxl_fbStatus  db  ? ;State of the character
  kbxl_bNlsShift db  ? ;shift status (reserved set to zero)
  kbxl_fsState   dw  ? ;shift state
  kbxl_time      dd  ?
  kbxl_fsDD      dw  ?
  kbxl_fsXlate   dw  ?
  kbxl_fsShift   dw  ?
  kbxl_sZero     dw  ?
KBDTRANS ends

EXTRN  KbdXlate:FAR
INCL_KBD            EQU 1

PUSH@  OTHER   XlateRecord   ;Translation Record
PUSH   WORD    KbdHandle     ;Keyboard handle
CALL   KbdXlate

Returns WORD