The Database Managers, Inc.

Contact The Database Managers, Inc.


Use an RSS enabled news reader to read these articles.Use an RSS enabled news reader to read these articles.

DataFlex Decompiler
Page 2

Finding a Flexkey Definition

by Curtis Krauskopf

One of the challenges of the flexibility of Flexkeys is that two different DataFlex installations could be using two completely different keyboard mappings. For example, one installation might use the standard default mapping, and another installation might use mnemonic associations.

Flexkey History

Around the time that DataFlex 3.0 was released, DAC dramatically changed the standard definitions of many of the Flexkeys. Their intention was to mimic, as closely as possible, the IBM Common User Access (IBM-CUA) standards that were in vogue. But as lamented in the June 1991 issue of GUIDE Helsinki Conference, the IBM CUA standard kept changing every two years or so.

Older versions of DataFlex (before 3.0) use a program called DFSETUP to customize the Flexkeys. The Flexkey definitions are stored in a file called TERMLIST.CFG.

Newer versions of DataFlex (3.0 and later) use a program called DFCONFIG.FLX that is executed with the DataFlex runtime: dfrun dfconfig. The Flexkey definitions are stored (using codes) in the DFINI.CFG file.

The DFCONFIG.FLX program in newer versions of DataFlex displays the definition of the Flexkey in plain text. However, the older DFSETUP program doesn't do that in all cases. DFSETUP displays most of the Flexkeys in a cryptic keyboard code, such as ^MC. What key represents ^MC? It's a mystery.

One way to discover most of the Flexkey definitions is to use the following DataFlex program. KEYS.SRC will compile correctly for all versions of DataFlex. It's intended to show the Flexkey definitions for versions of DataFlex before 3.0.

To use it, compile it and then run it:

dfcomp keys.src
dfrun keys

Next, try different keyboard commands. I usually start by doing obvious things, like the left and right arrows, enter, page up and so forth. Next, I run through the function keys, pressing each one in turn. Then I try the shift+ and control+ function keys, and on a PC workstation, I try the ALT+ function keys. After that, I try all of the Control+letter combinations, such as Control+S.

Unless the key is defined to be something really strange, like Alt+Ctrl+], I can usually find the definitions of all of the Flexkeys in a couple minutes.

As each Flexkey is encountered, an X appears next to the Flexkey name and the name of the Flexkey appears in the upper right-hand corner of the screen.




/Comments
  // KEYS.SRC
  // 
  // by Curtis Krauskopf
  // (c) 1992 The Database Managers, Inc.
  // http://www.decompile.com
  //
  // This program helps a user determine the Flexkey definitions.
  // 
  // Try different keyboard commands:
  //   1)  Try the obvious things, like LEFT and RIGHT arrows, Enter and
  //       so forth.
  //   2)  Run through all of the function keys, from F1 through F10.
  //   3)  Try all of the SHIFT+, CONTROL+ and ALT+ versions of the
  //       function keys.
  //   4)  Try all of the CONTROL+letter combinations, such as CONTROL+S.
  //   5)  Try all of the ALT+letter combinations.
  //   6)  Try anything else that might be defined, such as ALT+CTRL+]
  //
/feedback
  Press keys to determine their Flexkey definitions.

  PRESS ESC TO QUIT.  If ESC does not quit this program, then
  some other key is defined as the 'exit program' command and
  that key should be used instead of ESC.

Finding a Record:                             Most Recent Key:
  KEY.FIND      _       KEY.SFIND     _       ____________________
  KEY.PREVIOUS  _       KEY.NEXT      _

Editing:
  KEY.SAVE      _       KEY.DELETE    _

Cursor Movement:
  KEY.FIELD     _
  KEY.LEFT      _       KEY.RIGHT     _
  KEY.UP        _       KEY.DOWN      _      Written by Curtis Krauskopf
                                             The Database Managers, Inc.
Misc:                                        http://www.decompile.com
  KEY.CALCULATE _       KEY.CLEAR     _
  KEY.HELP      _       KEY.PRINT     _
  KEY.USER      _       KEY.USER2     _
  KEY.RETURN    _
/*
AUTOPAGE feedback 3
name result

STRING akey  1

PAGE feedback
REPEAT
  INKEY akey
UNTIL [KEY.ESCAPE]

KEYPROC KEY.ESCAPE
ABORT

KEYPROC KEY.FIND
  MOVE "KEY.FIND" TO result
  MOVE "X" TO feedback.1
RETURN

KEYPROC KEY.SFIND
  MOVE "KEY.SFIND" TO result
  MOVE "X" TO feedback.2
RETURN

KEYPROC KEY.PREVIOUS
  MOVE "KEY.PREVIOUS" TO result
  MOVE "X" TO feedback.4
RETURN

KEYPROC KEY.NEXT
  MOVE "KEY.NEXT" TO result
  MOVE "X" TO feedback.5
RETURN

KEYPROC KEY.SAVE
  MOVE "KEY.SAVE" TO result
  MOVE "X" TO feedback.6
RETURN

KEYPROC KEY.DELETE
  MOVE "KEY.DELETE" TO result
  MOVE "X" TO feedback.7
RETURN

KEYPROC KEY.FIELD
  MOVE "KEY.FIELD" TO result
  MOVE "X" TO feedback.8
RETURN

KEYPROC KEY.LEFT
  MOVE "KEY.LEFT" TO result
  MOVE "X" TO feedback.9
RETURN

KEYPROC KEY.RIGHT
  MOVE "KEY.RIGHT" TO result
  MOVE "X" TO feedback.10
RETURN

KEYPROC KEY.UP
  MOVE "KEY.UP" TO result
  MOVE "X" TO feedback.11
RETURN

KEYPROC KEY.DOWN
  MOVE "KEY.DOWN" TO result
  MOVE "X" TO feedback.12
RETURN

KEYPROC KEY.CALCULATE
  MOVE "KEY.CALCULATE" TO result
  MOVE "X" TO feedback.13
RETURN

KEYPROC KEY.CLEAR
  MOVE "KEY.CLEAR" TO result
  MOVE "X" TO feedback.14
RETURN

KEYPROC KEY.HELP
  MOVE "KEY.HELP" TO result
  MOVE "X" TO feedback.15
RETURN

KEYPROC KEY.PRINT
  MOVE "KEY.PRINT" TO result
  MOVE "X" TO feedback.16
RETURN

KEYPROC KEY.USER
  MOVE "KEY.USER" TO result
  MOVE "X" TO feedback.17
RETURN

KEYPROC KEY.USER2
  MOVE "KEY.USER2" TO result
  MOVE "X" TO feedback.18
RETURN

KEYPROC KEY.RETURN
  MOVE "KEY.RETURN" TO result
  MOVE "X" TO feedback.19
RETURN

when the program runs, it looks like this:

  Press keys to determine their Flexkey definitions.


  PRESS ESC TO QUIT.  If ESC does not quit this program, then
  some other key is defined as the 'exit program' command and
  that key should be used instead of ESC.


Finding a Record:                             Most Recent Key:
  KEY.FIND      _       KEY.SFIND     _       ____________________
  KEY.PREVIOUS  _       KEY.NEXT      _


Editing:
  KEY.SAVE      _       KEY.DELETE    _

Cursor Movement:
  KEY.FIELD     _
  KEY.LEFT      _       KEY.RIGHT     _
  KEY.UP        _       KEY.DOWN      _      Written by Curtis Krauskopf
                                             The Database Managers, Inc.
Misc:                                        http://www.decompile.com
  KEY.CALCULATE _       KEY.CLEAR     _
  KEY.HELP      _       KEY.PRINT     _
  KEY.USER      _       KEY.USER2     _
  KEY.RETURN    _

Go Back to Page: 1
Copyright 2003-2010 The Database Managers, Inc.

 

DataFlex: Tips | Freeware | WebApp Server | Books | Links
Services | Programming | Contact Us | Recent Updates

Send feedback to: