RE: Keyboard shortcuts

From: Martin, Marc <"Martin,>
Date: Mon, 5 Jan 2004 15:40:39 -0800

----boundary-LibPST-iamunique-781994473_-_-
Content-type: text/plain

>In fact I'd like to know how to handle keyboard events generally,
>e.g. a key press for suspending the execution of a program,
>followed by another key press to re-activate the program. Can
>anyone provide a simple example?

Here's an edited example from one of my programs:

-----
PROCEDURE HandleKey( v: View; key: CHAR );
CONST
  arrowLeft = 1CX;
  arrowRight = 1DX;
  arrowUp = 1EX;
  arrowDown = 1FX;
  esc = 1BX;
BEGIN
  CASE key OF

| arrowRight:
    settings.horizontal := settings.horizontal - 0.1;
    Views.Update(v, Views.keepFrames)

| arrowLeft:
    settings.horizontal := settings.horizontal + 0.1;
    Views.Update(v, Views.keepFrames)

| arrowDown:
     settings.vertical := settings.vertical + 0.1;
     Views.Update(v, Views.keepFrames)

| arrowUp:
    settings.vertical := settings.vertical - 0.1;
    Views.Update(v, Views.keepFrames)

| esc:
    settings.horizontal := 0;
    settings.vertical := 0;
    Views.Update(v, Views.keepFrames)

| "p", "P":
    pause := ~pause;
    Views.Update(v, Views.keepFrames)

  ELSE
  END
END HandleKey;


PROCEDURE ( v: View ) HandleCtrlMsg
( f: Views.Frame; VAR msg: Controllers.Message; VAR focus: Views.View );
BEGIN
  WITH msg: Controllers.EditMsg DO
    IF msg.op = Controllers.pasteChar THEN
      HandleKey( v, msg.char )
    END
  | msg: Controllers.TrackMsg DO
       HandleMouse( v, f, msg )
  ELSE
  END
END HandleCtrlMsg;
-----
--------------------------------------------

To unsubscribe from this mailing list, send a message containing the word "unsubscribe" to:
   blackbox-request{([at]})nowhere.xy

To get a list of valid e-mail commands and instructions on their usage, send a message containing the word "help" to the above address.

Send any problem reports or questions related to this email list to the list owner at
   owner-blackbox{([at]})nowhere.xy

Current posting policy:

a) To post you should use the same address by which you are subscribed to the mailing list. That way, the list server will recognize you as subscriber and forward your posting immediately, without creating any overhead.

b) If, for some reason, you cannot post from the address, by which you are subscribed, your message will be moderated to avoid spam. Please understand that moderation will often cause some delay, in particular over weekends or holydays.



----boundary-LibPST-iamunique-781994473_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwID5JbiBmYWN0IEknZCBsaWtlIHRvIGtub3cgaG93
IHRvIGhhbmRsZSBrZXlib2FyZCBldmVudHMgZ2VuZXJhbGx5LCBccGFyDQo+ZS5nLiBhIGtleSBw
cmVzcyBmb3Igc3VzcGVuZGluZyB0aGUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSwgXHBhcg0KPmZv
bGxvd2VkIGJ5IGFub3RoZXIga2V5IHByZXNzIHRvIHJlLWFjdGl2YXRlIHRoZSBwcm9ncmFtLiBD
YW4gXHBhcg0KPmFueW9uZSBwcm92aWRlIGEgc2ltcGxlIGV4YW1wbGU/XHBhcg0KXHBhcg0KSGVy
ZSdzIGFuIGVkaXRlZCBleGFtcGxlIGZyb20gb25lIG9mIG15IHByb2dyYW1zOlxwYXINClxwYXIN
Ci0tLS0tXHBhcg0KUFJPQ0VEVVJFICBIYW5kbGVLZXkoIHY6IFZpZXc7IGtleTogQ0hBUiApO1xw
YXINCkNPTlNUXHBhcg0KICBhcnJvd0xlZnQgID0gMUNYO1xwYXINCiAgYXJyb3dSaWdodCA9IDFE
WDtccGFyDQogIGFycm93VXAgICAgPSAxRVg7XHBhcg0KICBhcnJvd0Rvd24gID0gMUZYO1xwYXIN
CiAgZXNjICAgICAgICA9IDFCWDtccGFyDQpCRUdJTlxwYXINCiAgQ0FTRSBrZXkgT0ZccGFyDQpc
cGFyDQp8IGFycm93UmlnaHQ6IFxwYXINCiAgICBzZXR0aW5ncy5ob3Jpem9udGFsIDo9IHNldHRp
bmdzLmhvcml6b250YWwgLSAwLjE7IFxwYXINCiAgICBWaWV3cy5VcGRhdGUodiwgVmlld3Mua2Vl
cEZyYW1lcykgXHBhcg0KXHBhcg0KfCBhcnJvd0xlZnQ6IFxwYXINCiAgICBzZXR0aW5ncy5ob3Jp
em9udGFsIDo9IHNldHRpbmdzLmhvcml6b250YWwgKyAwLjE7IFxwYXINCiAgICBWaWV3cy5VcGRh
dGUodiwgVmlld3Mua2VlcEZyYW1lcykgXHBhcg0KXHBhcg0KfCBhcnJvd0Rvd246XHBhcg0KICAg
ICBzZXR0aW5ncy52ZXJ0aWNhbCA6PSBzZXR0aW5ncy52ZXJ0aWNhbCArIDAuMTsgXHBhcg0KICAg
ICBWaWV3cy5VcGRhdGUodiwgVmlld3Mua2VlcEZyYW1lcykgXHBhcg0KXHBhcg0KfCBhcnJvd1Vw
OiBccGFyDQogICAgc2V0dGluZ3MudmVydGljYWwgOj0gc2V0dGluZ3MudmVydGljYWwgLSAwLjE7
IFxwYXINCiAgICBWaWV3cy5VcGRhdGUodiwgVmlld3Mua2VlcEZyYW1lcykgXHBhcg0KXHBhcg0K
fCBlc2M6IFxwYXINCiAgICBzZXR0aW5ncy5ob3Jpem9udGFsICAgIDo9IDA7XHBhcg0KICAgIHNl
dHRpbmdzLnZlcnRpY2FsICAgICAgOj0gMDtccGFyDQogICAgVmlld3MuVXBkYXRlKHYsIFZpZXdz
LmtlZXBGcmFtZXMpIFxwYXINClxwYXINCnwgInAiLCAiUCI6IFxwYXINCiAgICBwYXVzZSA6PSB+
cGF1c2U7XHBhcg0KICAgIFZpZXdzLlVwZGF0ZSh2LCBWaWV3cy5rZWVwRnJhbWVzKVxwYXINClxw
YXINCiAgRUxTRVxwYXINCiAgRU5EXHBhcg0KRU5EIEhhbmRsZUtleTtccGFyDQpccGFyDQpccGFy
DQpQUk9DRURVUkUgKCB2OiBWaWV3ICkgSGFuZGxlQ3RybE1zZ1xwYXINCiggZjogVmlld3MuRnJh
bWU7IFZBUiBtc2c6IENvbnRyb2xsZXJzLk1lc3NhZ2U7IFZBUiBmb2N1czogVmlld3MuVmlldyAp
O1xwYXINCkJFR0lOXHBhcg0KICBXSVRIIG1zZzogQ29udHJvbGxlcnMuRWRpdE1zZyBET1xwYXIN
CiAgICBJRiBtc2cub3AgPSBDb250cm9sbGVycy5wYXN0ZUNoYXIgVEhFTlxwYXINCiAgICAgIEhh
bmRsZUtleSggdiwgbXNnLmNoYXIgKVxwYXINCiAgICBFTkRccGFyDQogIHwgbXNnOiBDb250cm9s
bGVycy5UcmFja01zZyBET1xwYXINCiAgICAgICBIYW5kbGVNb3VzZSggdiwgZiwgbXNnIClccGFy
DQogIEVMU0VccGFyDQogIEVORFxwYXINCkVORCBIYW5kbGVDdHJsTXNnO1xwYXINCi0tLS0tXHBh
cg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1ccGFyDQpccGFy
DQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbWFpbGluZyBsaXN0LCBzZW5kIGEgbWVzc2FnZSBj
b250YWluaW5nIHRoZSB3b3JkICJ1bnN1YnNjcmliZSIgdG86XHBhcg0KICAgYmxhY2tib3gtcmVx
dWVzdEBvYmVyb24uY2hccGFyDQpccGFyDQpUbyBnZXQgYSBsaXN0IG9mIHZhbGlkIGUtbWFpbCBj
b21tYW5kcyBhbmQgaW5zdHJ1Y3Rpb25zIG9uIHRoZWlyIHVzYWdlLCBzZW5kIGEgbWVzc2FnZSBj
b250YWluaW5nIHRoZSB3b3JkICJoZWxwIiB0byB0aGUgYWJvdmUgYWRkcmVzcy5ccGFyDQpccGFy
DQpTZW5kIGFueSBwcm9ibGVtIHJlcG9ydHMgb3IgcXVlc3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBl
bWFpbCBsaXN0IHRvIHRoZSBsaXN0IG93bmVyIGF0XHBhcg0KICAgb3duZXItYmxhY2tib3hAb2Jl
cm9uLmNoXHBhcg0KXHBhcg0KQ3VycmVudCBwb3N0aW5nIHBvbGljeTpccGFyDQpccGFyDQphKSBU
byBwb3N0IHlvdSBzaG91bGQgdXNlIHRoZSBzYW1lIGFkZHJlc3MgYnkgd2hpY2ggeW91IGFyZSBz
dWJzY3JpYmVkIHRvIHRoZSBtYWlsaW5nIGxpc3QuIFRoYXQgd2F5LCB0aGUgbGlzdCBzZXJ2ZXIg
d2lsbCByZWNvZ25pemUgeW91IGFzIHN1YnNjcmliZXIgYW5kIGZvcndhcmQgeW91ciBwb3N0aW5n
IGltbWVkaWF0ZWx5LCB3aXRob3V0IGNyZWF0aW5nIGFueSBvdmVyaGVhZC5ccGFyDQpccGFyDQpi
KSBJZiwgZm9yIHNvbWUgcmVhc29uLCB5b3UgY2Fubm90IHBvc3QgZnJvbSB0aGUgYWRkcmVzcywg
Ynkgd2hpY2ggeW91IGFyZSBzdWJzY3JpYmVkLCB5b3VyIG1lc3NhZ2Ugd2lsbCBiZSBtb2RlcmF0
ZWQgdG8gYXZvaWQgc3BhbS4gUGxlYXNlIHVuZGVyc3RhbmQgdGhhdCBtb2RlcmF0aW9uIHdpbGwg
b2Z0ZW4gY2F1c2Ugc29tZSBkZWxheSwgaW4gcGFydGljdWxhciBvdmVyIHdlZWtlbmRzIG9yIGhv
bHlkYXl9fQBuZy5jb20gKFsxOTI

----boundary-LibPST-iamunique-781994473_-_---
Received on Tue Jan 06 2004 - 00:40:39 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:59 UTC