diff options
Diffstat (limited to 'oskey.icl')
-rw-r--r-- | oskey.icl | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/oskey.icl b/oskey.icl new file mode 100644 index 0000000..d8dce3d --- /dev/null +++ b/oskey.icl @@ -0,0 +1,157 @@ +implementation module oskey
+
+
+import StdBool, StdClass, StdInt, StdOverloaded, StdString
+
+
+:: SpecialKey
+ = { virtual :: !Int
+ }
+
+BackSpaceVirtualCode:== 8 // BackSpace
+BeginVirtualCode :== 115 // Begin of text
+ClearVirtualCode :== 71 // Clear
+DeleteVirtualCode :== 117 // Delete
+DownVirtualCode :== 125 // Arrow down
+EndVirtualCode :== 119 // End of text
+EnterVirtualCode :== 13 // Enter
+EscapeVirtualCode :== 53 // Escape
+F1VirtualCode :== 122 // Function 1
+F2VirtualCode :== 120 // Function 2
+F3VirtualCode :== 99 // Function 3
+F4VirtualCode :== 118 // Function 4
+F5VirtualCode :== 96 // Function 5
+F6VirtualCode :== 97 // Function 6
+F7VirtualCode :== 98 // Function 7
+F8VirtualCode :== 100 // Function 8
+F9VirtualCode :== 101 // Function 9
+F10VirtualCode :== 109 // Function 10
+F11VirtualCode :== 103 // Function 11
+F12VirtualCode :== 111 // Function 12
+F13VirtualCode :== 105 // Function 13
+F14VirtualCode :== 107 // Function 14
+F15VirtualCode :== 113 // Function 15
+HelpVirtualCode :== 114 // Help
+LeftVirtualCode :== 123 // Arrow left
+PgDownVirtualCode :== 121 // Page down
+PgUpVirtualCode :== 116 // Page up
+ReturnVirtualCode :== -1 // Return (dummy under Windows)
+RightVirtualCode :== 124 // Arrow right
+UpVirtualCode :== 126 // Arrow up
+
+instance == SpecialKey where
+ (==) {virtual=v1} {virtual=v2} = v1==v2
+
+instance toString SpecialKey where
+ toString {virtual}
+ = specialKeyCodeName virtual
+ where
+ specialKeyCodeName :: !Int -> {#Char}
+ specialKeyCodeName BackSpaceVirtualCode = "BackSpaceKey"
+ specialKeyCodeName BeginVirtualCode = "BeginKey"
+ specialKeyCodeName ClearVirtualCode = "ClearKey"
+ specialKeyCodeName DeleteVirtualCode = "DeleteKey"
+ specialKeyCodeName DownVirtualCode = "DownKey"
+ specialKeyCodeName EndVirtualCode = "EndKey"
+ specialKeyCodeName EnterVirtualCode = "EnterKey"
+ specialKeyCodeName EscapeVirtualCode = "EscapeKey"
+ specialKeyCodeName F1VirtualCode = "F1Key"
+ specialKeyCodeName F2VirtualCode = "F2Key"
+ specialKeyCodeName F3VirtualCode = "F3Key"
+ specialKeyCodeName F4VirtualCode = "F4Key"
+ specialKeyCodeName F5VirtualCode = "F5Key"
+ specialKeyCodeName F6VirtualCode = "F6Key"
+ specialKeyCodeName F7VirtualCode = "F7Key"
+ specialKeyCodeName F8VirtualCode = "F8Key"
+ specialKeyCodeName F9VirtualCode = "F9Key"
+ specialKeyCodeName F10VirtualCode = "F10Key"
+ specialKeyCodeName F11VirtualCode = "F11Key"
+ specialKeyCodeName F12VirtualCode = "F12Key"
+ specialKeyCodeName F13VirtualCode = "F13Key"
+ specialKeyCodeName F14VirtualCode = "F14Key"
+ specialKeyCodeName F15VirtualCode = "F15Key"
+ specialKeyCodeName HelpVirtualCode = "HelpKey"
+ specialKeyCodeName LeftVirtualCode = "LeftKey"
+ specialKeyCodeName PgDownVirtualCode = "PgDownKey"
+ specialKeyCodeName PgUpVirtualCode = "PgUpKey"
+ specialKeyCodeName ReturnVirtualCode = "ReturnKey"
+ specialKeyCodeName RightVirtualCode = "RightKey"
+ specialKeyCodeName UpVirtualCode = "UpKey"
+ specialKeyCodeName otherCode = "toSpecialKey "+++toString otherCode
+
+backSpaceKey:: SpecialKey; backSpaceKey= {virtual=BackSpaceVirtualCode}// BackSpace
+beginKey :: SpecialKey; beginKey = {virtual=BeginVirtualCode} // Begin of text
+clearKey :: SpecialKey; clearKey = {virtual=ClearVirtualCode} // Clear
+deleteKey :: SpecialKey; deleteKey = {virtual=DeleteVirtualCode} // Delete
+downKey :: SpecialKey; downKey = {virtual=DownVirtualCode} // Arrow down
+endKey :: SpecialKey; endKey = {virtual=EndVirtualCode} // End of text
+enterKey :: SpecialKey; enterKey = {virtual=EnterVirtualCode} // Enter
+escapeKey :: SpecialKey; escapeKey = {virtual=EscapeVirtualCode} // Escape
+f1Key :: SpecialKey; f1Key = {virtual=F1VirtualCode} // Function 1
+f2Key :: SpecialKey; f2Key = {virtual=F2VirtualCode} // Function 2
+f3Key :: SpecialKey; f3Key = {virtual=F3VirtualCode} // Function 3
+f4Key :: SpecialKey; f4Key = {virtual=F4VirtualCode} // Function 4
+f5Key :: SpecialKey; f5Key = {virtual=F5VirtualCode} // Function 5
+f6Key :: SpecialKey; f6Key = {virtual=F6VirtualCode} // Function 6
+f7Key :: SpecialKey; f7Key = {virtual=F7VirtualCode} // Function 7
+f8Key :: SpecialKey; f8Key = {virtual=F8VirtualCode} // Function 8
+f9Key :: SpecialKey; f9Key = {virtual=F9VirtualCode} // Function 9
+f10Key :: SpecialKey; f10Key = {virtual=F10VirtualCode} // Function 10
+f11Key :: SpecialKey; f11Key = {virtual=F11VirtualCode} // Function 11
+f12Key :: SpecialKey; f12Key = {virtual=F12VirtualCode} // Function 12
+f13Key :: SpecialKey; f13Key = {virtual=F13VirtualCode} // Function 13
+f14Key :: SpecialKey; f14Key = {virtual=F14VirtualCode} // Function 14
+f15Key :: SpecialKey; f15Key = {virtual=F15VirtualCode} // Function 15
+helpKey :: SpecialKey; helpKey = {virtual=HelpVirtualCode} // Help
+leftKey :: SpecialKey; leftKey = {virtual=LeftVirtualCode} // Arrow left
+pgDownKey :: SpecialKey; pgDownKey = {virtual=PgDownVirtualCode} // Page down
+pgUpKey :: SpecialKey; pgUpKey = {virtual=PgUpVirtualCode} // Page up
+returnKey :: SpecialKey; returnKey = {virtual=ReturnVirtualCode} // Return
+rightKey :: SpecialKey; rightKey = {virtual=RightVirtualCode} // Arrow right
+upKey :: SpecialKey; upKey = {virtual=UpVirtualCode} // Arrow up
+
+toSpecialKey :: !Int -> SpecialKey
+toSpecialKey specialkey = {virtual=specialkey}
+
+isSpecialKey:: !Int -> Bool
+isSpecialKey specialKey
+ = containsSorted specialKey virtualKeyCodes
+where
+ containsSorted :: !Int ![Int] -> Bool
+ containsSorted x [y:ys]
+ | x>y = containsSorted x ys
+ | otherwise = x==y
+ containsSorted _ _
+ = False
+
+virtualKeyCodes :: [Int] // The < sorted list of virtual key codes
+virtualKeyCodes =: [ BackSpaceVirtualCode // 8
+ , EnterVirtualCode // 13
+ , EscapeVirtualCode // 53
+ , ClearVirtualCode // 71
+ , F5VirtualCode // 96
+ , F6VirtualCode // 97
+ , F7VirtualCode // 98
+ , F3VirtualCode // 99
+ , F8VirtualCode // 100
+ , F9VirtualCode // 101
+ , F11VirtualCode // 103
+ , F13VirtualCode // 105
+ , F14VirtualCode // 107
+ , F10VirtualCode // 109
+ , F12VirtualCode // 111
+ , F15VirtualCode // 113
+ , HelpVirtualCode // 114
+ , BeginVirtualCode // 115
+ , PgUpVirtualCode // 116
+ , DeleteVirtualCode // 117
+ , F4VirtualCode // 118
+ , EndVirtualCode // 119
+ , F2VirtualCode // 120
+ , PgDownVirtualCode // 121
+ , F1VirtualCode // 122
+ , LeftVirtualCode // 123
+ , RightVirtualCode // 124
+ , DownVirtualCode // 125
+ , UpVirtualCode // 126
+ ]
|