]> err.no Git - sope/blob - sope-appserver/WOExtensions/JSKeyHandler.m
prepared for OSX frameworks (not finished)
[sope] / sope-appserver / WOExtensions / JSKeyHandler.m
1 /*
2   Copyright (C) 2000-2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21
22 /*
23   TO BE DONE ...
24
25   Usage:
26
27     KeyHandler: KSKeyHandler {
28       handleKeys = (
29         "<ctrl>@left",
30         "<ctrl><right>",
31         "<ctrl><shift>s"
32       );
33       
34       modifiers = clickedModifiers;
35       key       = clickedKey;
36       action    = doKeyAction;
37     }
38 */
39
40 #import <NGObjWeb/WODynamicElement.h>
41
42 @interface JSKeyHandler : WODynamicElement
43 @end
44
45 @implementation JSKeyHandler
46 @end /* JSKeyHandler */
47
48 /*
49 <html>
50   <head><title>doof</title></head>
51   
52   <body>
53     Blah<br />
54
55     <form>
56         <input type="text" size="20" />
57     </form>
58
59     <script>
60       function keyDown() {
61         if (event.keyCode == 17) {
62           // ctrl
63         }
64         else if (event.keyCode == 18) {
65           // alt
66         }
67         else if (event.keyCode == 16) {
68           // shift
69         }
70         else {
71           if (event.shiftKey)
72             window.status += "_";
73           if (event.ctrlKey)
74             window.status += "^";
75           if (event.altKey)
76             window.status += "@";
77           if (event.keyCode == 37) {
78             window.status += "left,";
79             return false;
80           }
81           else if (event.keyCode == 39) {
82             window.status += "right,";
83             return false;
84           }
85           return true;
86
87           //window.status += "key:" + event.keyCode + "," + event.shiftKey;
88
89         alert("Modifiers: " + event.modifiers +
90               "\nALT:     " + event.altKey +
91               "\nCTRL:    " + event.ctrlKey +
92               "\nSHIFT:   " + event.shiftKey +
93               "\ntype:    " + event.type +
94               "\nkeyCode: " + event.keyCode +
95               "\nctrl-on: " + isCtrlOn +
96               "\nalt-on:  " + isAltOn
97         );
98
99         }
100       }
101       function keyUp() {
102         if (event.keyCode == 17) {
103           // ctrl
104         }
105         else if (event.keyCode == 18) {
106           // alt
107         }
108         else if (event.keyCode == 16) {
109           // shift
110         }
111         else {
112           // window.status += "-" + event.keyCode + ",";
113         }
114       }
115
116       function keyClicked() {
117         alert("Modifiers: " + event.modifiers +
118               "\nALT:     " + event.altKey +
119               "\nCTRL:    " + event.ctrlKey +
120               "\nSHIFT:   " + event.shiftKey +
121               "\ntype:    " + event.type +
122               "\nkeyCode: " + event.keyCode
123         );
124       }
125       var i = 0;
126       function ooverride() {
127           window.status = "" + i + "ooverride " + oldHandler.funcname;
128           i += 1;
129         return true;
130       }
131
132       function setHandler(name, func) {
133         oldHandler = document["on" + name];
134         if (oldHandler == func) {
135           window.status += "reset handler" + name;
136           return;
137         }
138         
139         document["on" + name] = func;
140         
141         if (oldHandler) {
142           func.oldHandler = oldHandler;
143           //window.status += "set old handler " + oldHandler;
144         }
145       }
146       
147       setHandler("keydown", keyDown);
148       setHandler("keyup",   keyUp);
149
150       setHandler("keydown", ooverride);
151       setHandler("keyup",   ooverride);
152       
153       //document.onkeypress=keyClicked;
154     </script>
155   </body>
156 </html>
157 */