Description: Free Vision.
This file as text.
(active) Revisions in this set:
cee3065f9321d84ce0d76cf6c016a51814077c54,b6f0fa055f03a70056f4b9447fde0c880b0233bf,c10c9607f1bdd0810304842349acb812718dee47
28235033d742b7fb75e08fd661724b754e2d9d45,58d899bf75308e6b69159dd531e1daef7b4b06e8,ba4d10ade0776de1c8bb10a6a41d3afe33c9ee5d
1d2414a2b880b7c4320a6a6105472b298dc72177,db8f3eb0a7d55df62b6345be3e140c9cd19ba76c,9a2e1b99cb890ef06a238b37b7873fd6efd6b31a
2593a69eaf0a96b39821dab37f402efc0fbbf4ab,18a752d20ab3e0b1fd835d01a62d0843f6141af7,0a511ddb30bb1af327136091a99123f8876b105b
7d638a1e390970658014f762bcd8c8d743bc2e9c,f05c6666fe97f365f376fb3b7d8d8c0f6b91fb3b,d681d51e38659918dcef5a7322d286ee94dcd698
3e135c02e79abff3fc26da2319c811b007074d7b,4f482516ddfff69c94bdcc0872ca6e6e8d04ed4e,aac266e82de41fb899e2e2be34b8ca3ebcc02389
a8da1b51309069b1c274793ddf47472af131df2f,baa6525a9e73f885381e94a7a8acf03c2d4f406f,5648bd9bdc283697604608f4c9b43f18f85ad047
55c9af86f44712251fccf54d518205b5c39bad5d,ac81dc399611d348fe81df7a4a96288b2f6d1e13,4ea55963ef78a168686761578fc8a3e840279ee6
0f61895194672675bfcce07389a8099c71ce2fca,ab67fe179567312d0c8124086e22ea60b23f1aa1,97807af58d437998181982b77bb62cdee0e24a30
2b1297c3970f9815a35c3694920c634e0a30c3e3,0f8db5f590342c65f72e2d26faa4691a1929a1a9,9dd394a5f74d358db135dc4ad948879096080080
9c63675368559a4b41e15624190c09a0c0cf9164,ac4f00af1eaf877d9d6288b9df0b3e5be5e2eb6e,258ed213e43932ba3a44dd47264269517887c669
ba1450f7e9488e1ae05c6bf46f3c13065180f642,c23df60ae5c3f16bda2ce2e7530368a65324caa5,529c76504137cb99b98d11f153999410a38f6bf4
d3310cc731fea0ed1e3cb2bb473d93f53f6fc24e,23957bddaaaadc8f174367f135c82ad2f4809677,5f9f97e75d35f70a93bf8f95f8f3416093ea48fb
1961c8f27c62a67561d9844f433ef6db5175a548,d68e48d1ead5f2ad7d5fab090f094679ff632db9,97995773a0fd567f3528d0729285420715460a87
3c89ec6f83f2581ca0a8d42705424464a48d27c8,0f1a20b8a48722ff00214869c30a7e99883bdb4c,2d68b7c7a9e175fed0ea5607fa78e8a766041859
af12abc939bf12fbb48bd2ff4759f5021c057311,9a82b32cde500d92b029746ad3c0847612f64187,7e16f651ea41f4657d327d97f266ec196dcb40db
d8d6c857e59bdedba1657b56aef66c3818b84726,889e50ed58004611c225ceb82e6559f573072679,774317788f1b2c3442ef78a759d9a60a8c7aff89
da978acfd97eaf08a66038b151f7f83cca83d769,982a4f4c63a4fcf424b9ff998f8aab846bced537,1e94304bf04a36497098ff282bdb0d64de6bb3db
41b93832c0ffe6c05cd2b14796642a9979414a6e,5c6d6b030d0ef310f3b83470474c25c2f9332d3c,0b850d9883e8d956a749585a212f6c0473126159
fe60708baca8ae1d15e81ae8f6c1aee2d2b09e85,bf3865a15a9429658c230b017d641e05cc38348b,0e7f562d19387dfd8e60a6f67dd1754496927888
dba71de45bd7b7750383aec27608e092783b50f1,bac79df17e156e6b2cdc457ee586b4cc1957d01d,504bd61c7f56caebec1cf8fd75bbe11d8fe7d1eb
36899f65cf83f3f6f23428c313c561b02bca139e,1c86c0de48b20fdb2dd80fe4c867f4243eb1aa9e,eaa60e45465f1ab252030ee8fb79d201a6872a3c
4034dcc2c68797c8159978fe6d5a68b550a589c6,ead1eab3d7342ac6476ee87e871f6214872e5b1f,b5575c0829373904a10e532dac7ef26764705ad6
e583341877ff53bff386d038c2e387a224751121,837659f4201aab4fee9c8678fe51ac8a3218ca16,c964eab85d726ede55c745c4a0b9187fada7c858
6aa8b718f46b6926836aff4e40cda9e868701eb8,b8dfa1b8e68946db2ce52deb37c681eccba73418,f8320dff082272a41e6a2d6d0f8a5ba50b4ea80b
0d1fef96a1d0b4c7c70f9eed24b6a8997e3e109b,b13c8e3ef68607a7a37694fc1605dbb743e8650b,ea3124ed4af17414c0526ffac7a80b6ac6178842
cb6ba25e1b1a23ac2dfb3c17afb6ada075b54b9b,d5283cae7fa84ede4b82743a762bebd51ede8a55,d4913f490f30a2f4521573fadd6229f0a7e6402a
2746b0e035f558d7b67366a5633f929e73ed452e,453bdaaafc71dcc467528063395aa3188886df6d,11db30ab3d347f358f6ca5e86bc1640f8930c11c
4864aba47a325c28674bc9581ed2cde92b94b016,6109c5606624c41923a1b3bb5ba2107e586ef2a9,ec0fa8f46f25ec4f307486dc6fc9b7fe2d8c3bc0
834a6579d7ea7caab3b8e40d2a94ab6bda4dc198,75db39f06434280c32980480d52def9c188a2c66,44213e33895210b0b1ece2353414355ea364dbd8
28cc421b13ded883a6c2e6c39a7d2e3ee63271f6,3d4a242974f5290302e7afc1f18cb462ce6942a7,c5541e9376af14246897f7013d1a72a62da7032f
1f3e903c107ef366b8c1ed2d57e4e1efdad13d02,b564e400fc76fa5f429922849a96580d6494bfac,4b0edb61153aa71dea42c1f6e270daf72753384e
0d76565e50239b58176c9d8a298677c2093ac3a1,8a7ba17e12daa3e03c89e4794daa07e852105f57,3297a453ea0717b1c4858015adc494c4dd467239
ae339ed8fb7d5678db9d5f9db3df4002a21074c7,7fd8562d4a19c3d271ca9d8ea912d006d1b8012c,6fa787674f53b7e01dfb9f2de12e92367c44ba0c
98132ce24e7eab0793065dea5d91d14ae8a4e075,c9cc530d948d4270e528b63ba2bb13493366d907,6198d4a0a1eabe00f5ba947f24747f5c1bab9f94
bb06c623c3100372c1cf7a769da0d7bf1eb94ce0,766162a3481880e0c0533c0309aeb9fd19a0e545,e8a0abf075a6ac777b3928f5623f6f3e67a0050a
763124567d20c79d6bdd9ca550899588367bad2a,2b0cdc0c15d6012f580a1e2e578ab1de291c5bd4,c540ef3bf85d0bb8298d57025400e8fa1af4323a
86f36c66c048f4ed692d829fcbd4a28e2f9b7a7b,8b0747f5529cafaf0823adcb7d9c1184f09a2f04,346cf6a32ff9d360f363715b940d081d713a475c
17b748ef9ae87cdff765ff1aedfdf23f643f7367,08c5d9b00773c9f1bbf7d703109ba9cab2b89654,eb6d1dc73f9b2694fe6baf692936a65939c026b3
4ff66758ee71ffdc5a99b86c3b824a0ab5f81b66,ad35f14017ab89059ee8c608c77a34d93f902cd9,c92235f4fd4c9430e3468e3b17868a68ccbd459a
3f0d1aca089fbc674fbd8a1e82674e4726d03c0d,0172420df7dd4f317c050084d39ee271a6eba17a,d373397f30324be8f0e7f1085ed5322e17bd22a3
0fe68e7c9edc24226fdfe9fe93d6ceef9fce4824,d659c731d8277b7beca49e25df704dc51259eaa4,92334d86dfafcacc31c0c2b5c184c029e8ad2cdb
e1da44c21913bcfb21cd404276d37dd726ee11ff,78862011b2dc79757a001c92b0e7bfa975ce5723,29dfb6131e6e1819591bf69a009387c6c8dfd07d
90b422b2d44eb1b54cd9c98d9bed8e6f97686296,cb6a66fed0ddde682706434bf638b8158b616396,1ffb6c6fdf22c24e7740462c04d025df8b2d84ec
047b435131103d0c4018745899b2cf2bb6a9e2ad,88e960cd00ee0f4efc259fce11e6c0eec287c0a9,f5005e46469f038ac3debcba16407bdb9f5c4e84
a9a0dfeae387f49a9108263f5498f78cbe024ca2,79aac426fd35f18a52a986656abd7de8cdf84c95,ddde3628ba2c1da90fd28622221996cb341ba59f
5dae243ffd4b2820b7e0bb54eeeefdb4e3bb2a30,2cfab10cb1f9f6f6e44d438576db61d56f5aac99,297e9881c6f6fda8865e50267e033cc68224724d
5e9ba29d89a34e1cc14f95f6ce47b7b87e6e683e,ddd262168846fbf2ba5372114ada135af71225cd,4d7538a0da03e8c177c4367d1e7080bc73fd04f2
5b5f6b71581e282d9e7b68f953eb682269f9c79e,0d844aaa4150d4884ebd1ad411c791fe779e41db,7cf1d227fb2435978788ec6f283a7410d5e544e8
f0adf5d6120953274e901e055edbb29b42b7f616,25cf57b085ad8043e1a7a82ac4ea5f1335a8b537,d5ef64fb91cddc665f25bf57c93d1d442604843a
6e845e397fd1d96c6be0ad0caac80bde3c34b27e,1d0ec1b96671437913c86e35deffd2f28a1ac153,5013e7039a3dc30df510941eac1cd365a50fe10a
1a643e250a070d873a2c7b4253767bf457a85643,f64bd5c07974559809148d0872f786122b881b1f,d41d6de6ec40a38ef495924e4cb77fb2cd5f3d15
829404a9570e15839ef15b845b43c009afe2055b,be726fdd09e05de3695f7eb75e8b95c17d02e8f0,55337def9ab243847853ef9b1dd58c0b564fcabc
057b786fbde4ec4963a9d67dc57fe6daa0791642,8a0a97576a5e762d6e6be33b82ea40acc06e8009,b8baf3bb85be26c3e10dfcb44ab61d3d98bd7738
7da5856dbd930ff246d76ec588438b7cceb87b49,1c9c84d01eb06bc3550d67836db2926f54eebde2,af4d301af9beb51331fdd864bceda75e1710f2f6
6cbf84eca626981e19a379371614a77b1838a6fb,5d3d64b3409efd9a109aa87f6bf2008a8da4b85c,c466caa0c8b439e563c41259d98a872abb77b0d2
98f42567130bbd6e47b357b93137f516b7ee8d1a,2ac661f63e21363d0715a4d213f8a1710ac8f660,5843d66a38276a1752766f5dfb853f44bdb08d16
d96b84cf1f81413e6ff8f8978b7712e34cbe2e88,9c4d842a6f6c80a1972d5ad8aaf47e66a3b7890a,b240b78c9fcb5daef7388e60f6287e7f93ec308a
b8a2c613e31d808436a13ba2f747801f27632e42,c0482743af23100033e1af8490abc856ed70a580,6c0491f7c2faf4f9c6ef7ad68e9ce5315fed1291
8dc55d82942d36a5723b2b97f4ec5699563edb14,818d3f2f6c112fd8c2fb70e7128e198eb7a0d1aa,a7e63b66ae0197943a89d4be7431acf61d302407
e583ba6cfaff78c2b890a32fbf00fd96bbc71237,545dd0353bfc15751c6d317370fb790d304647c8,89c7ae42afc2511a8cb40000db251f8fbfec4c9a
8ed768d48613b3f49621fe839f1be290def49abf,f04d87bc3da1959e635b1645c4f8bfb36ef7f5f6,1b27a955fa60036ea77d34629d963f104a3bdc10
0d171d91ae78ee7513370574128c5ca22789f613,c271a7106018c7acc056a2ef6bc01b0836923f1a,fb7fdfaae438b1497c6041755bfb15dada8cffc0
1bc06ec2767faca0764880bf70605a1fcacdd2af,83e492235e99c1ae079c87995be30b5d624370c9,9b419b800a2ab0a588615efd4b98f6190201c007
60a7eac72b9292decc314749d9f5a12f4d48ac20,febcfc8d20d5a57544fe394a8b4754731e68943c,91167f41a6f53a6db27085ab0ed9e930ede13ea9
700b30851e8b1294a78c9a50d4619e26f011c3ca,1bedcef063aa9e1753f6905afa4d1a65cc378a04,fdfc40e86bcfaa5f45bdc87eb8fa74a01b3be8f6
8751e983397d0712e92c7d19bd2c8f7a8d02a41c,cc643608a22e9410c9d6391f40a7ffd9480aa9eb,59a60856dc0dff4041ff1f4cb33629a6aa04fbd6
17f7cb0e45ac10f19dcb7e883365c2c365d1c16d,e539696f29a48912a4e2cd92b9f8b0210a5e0535,4944e9296fc9c3b55367babf31928e8fa7169369
75e42870ae10ee5d446ab6d4d8335aa7eb02269e,b6d2c6ccb721bc8707fc992c407cb695a5c5eef7,646ddb82173c7a55d7b4fa34c7b2cc75e9fa7c87
2ecca003dd15e8f7c082eeb3c2ff6ea141487017,d4be82e87988cfe921c8843cbe6856176a1209d1,f9cfc0aeb4de2e6ecb347b011ad2ab2ff2cac007
ca1b315e2799cc3c94e9485312d1b7d2b36a60fb,7b71eefbdfeab44a93695f93dfefac81fa8d09fb,c669b8ac83adfd33d415f1e52cfca03a36cb74bb
46586902f4c11be78d26048061e7203da14ae9e9,ea0213810b5f08a5c8df9ec16c160547101b0151,6bef792f3303eba2da048ad8a9950cac2c2a787b
028c06219290b7f1aa35c581e27b7a7dcfdc2ed8,de770cf1bea6238680853db72816a29f55098760,fe7324a04ca69b5d3f76fded91041f21111c671c
c63534af487eb2972f258fcf5d84a91f9c902095,1c9fb8ec7dc83230dd264147ddc167eb5f323804,3dfefc25efa6ebced10e2e2dbde187130bbab2cc
fe312ab99ff41531686afed3ce0f7446d928a765,ddd87e09ff91b16d0926a857787e753eda4baff0,00beafae5be8d267469128964c6e901a6817e0c3
1b1facf87991774ff536acd4bddbd00faac243bc,38ef18b4f4af21230d751a546f71065ecd3512af,3c3f43ac665385b2c259c5930da9452682ba3cb8
2f442ab6d09cee0c7675eee9578288609f6fc510,306cfa83e4f044665e23369d2ddd1bb513c8b839,b681e2cd7fb8c12eb55d374b2adc7e247706205f
2181e7c61d14e894cabe6bae050720561164b685,0c2a1ffba8bb86294b226db30e4f744eb2b1da9c,78c3b698b183c690592e3f63fa8b2e6c12618607
4b6eea19189dce34125eb0e3de74b07de5cf8e43,40870af6a7dc39322622f7c4646b974c0d0800be,6ca821950d7dcd8579bd1e87ca22049aaf9e8b8d
41a51e8e4a6220935ff65f6e313c80380c71c1e9,af19d2a98285e96995898cfee325f97cd706a9b2,52a29e0ba7e6dbf5cdc6dc0ba9b60c88e2307856
0b7d4801b077856035a56c7a67806210306df21d,3149506d7f82ed315a809a0c76c10daf9c4ce3f1,c1dca28cc5759a9190089849e83d6dd3c72a77e2
a57bda94defdebc54a9ea26cbda85d7fe6ab377e,6aacb9696184f25755a7a0c51041eb953c60808c,088a52a1cec23092d2c918cb121b44bd9391ee74
12fb58325a6a24663582762f7296fc903cef3420,063133f2f5726e0f71d74149c2f522ecd37a882e,2abcf62a958476ba80b78b3c7875d9272d9f7e90
14af3cb5cb48b39589a28dfd34618cdcd6000ca0,df95478d19bceedd41a86dbc3c8c006e91b2a0a3,77279fb5ef2f4712d38ccd1fcab59f9f9e9802e1
62f8899c1b13c58ab3d318c55c607ccefab9b811,ed670d2ce7ea9d99f1dbd915d5adbd41f5467137,ed0ec9468095a870767b3cf0e54a9603548bcd98
ce9e1e84669018bcd10c9cf3b163af37b66e0c54,40eede3a7a778d383ce2156a595069b320fd8aa0,1c961a498677e41dd210869e4877a27a21cbddfd
da569e952e0123da0e54570dfe32b5377e671939,15ff16d85218ad77941878493af4b120cb11da47,2208b55f767117cfc5a32df3f81c44e8001e7624
5a8434234869887dae77479507af8bdc94c11cf0,0b8a0fb495ded3cc71e4a44c6174216922ebcd36,af5f75fd5adc53383a654e8f9849117c2219fe52
41e32d0fbad6ad541959802590c4cdb12d857cbb,9f22623459866915d8769bd2e6cd9c8a75357c6e,398c6519a541c47a6d86271daae53b2562fee0ee
55b8fd6e9425fe627352930a716c0871393e7d96,4ed7bd9f668123b7a20a2f871ed36a024e41596f,91ccf4e9c643917472cd55d42094c2a1c29e05ac
e1e939c844b4c285cdb52be178b938f5e9a44a0e,c881067b2395609448fdc7b49fce076b13ffae93,501b2d6c6f48a43a1cf695fac795abca45cd0536
6345a25304ed2de2cd28dadc24e4b5bc57d1a7c2,25a681295a2ee176bd00493b02addc8cbc384139,ac9feac2c86dfd118f017f7462072805be95ec97
aee5a58000dcc2f7c0dd6fa0bc6bffacf07470af,e79fbff1545e41545141a14e1c4953d301370c7a,61623c43ca57cce7deec020cf68e9cabc683ad57
3eae0213be485a9c4a7384796bb4639ae3317cc9,3564d5e34a9a3dfa02ddef37ec9498afa40848e0,28732fffa2f153ea55cd450a075ab484111a2e7a
0d9298f01aaaf8c137bef8ad4fc8f7a603e70db7,5121e2c259c12411ea77fac454a83e498f0bd7d8,921a72566f396e58fad456700d34cac40830d935
f49675c4fe286879131001986f7707fc3aad2ac6,f227efb2589e121cbeed03ab1024b89b25674615,f67c4b1c454ba1d62a8a83db3fa93752a2ee7457
95ba16228a8018187bf4e1a1d6324ede023efede,935467ae2320ef36021d6428752ea6b26cfdae74,359d23e595e164d4e895f90425ab57d1829696d3
f3eb7f8608597109a29b4ca566ec426d5da1ca5c,9c3a66930c7be316b97b9e932140a56cc0b35394,86486f9c463ef9c377e294f3ab897bb5e71b0306
a67c85cb89a556194d53dbf3e23c09750e4a16a2,818e3ae6e508788f628a7edc55782cef1da96d77,e1cb1881572cc0f36cc92b518b3f57ae9e20691f
538670c5a23a14ca36ed47e3c6d46f51164b861e,9d283cd983406aa6a6017c0faba2ad4509385dda,4c4388f830b5c8f02caf246248f0387eaec13204
97b79b3d4e67126d1db9745e5d3d5be33fc3add9,8d7a6cc778f939ab48006fd2ffa2c71b13ffee22,1b4c2b055124e6ab99c3a1464f8d7ae0baa2c5a3
fb872569da337454566eee04a45f55c09e26aa02,87cfd7dcaed01a183d42256822af192ebfc10790,204575594555ca74e78387772bf993852bf7b7ca
7e593750e8c57286c6a01977b6834401bb8f6391,ae495ab8883eccd23f5b1c74023ee109ba26c447,aebc7458e1aba59154cb6a6b5c581bafad061e14
c893233359603fe5e4db38afcee458a56922c357,1fae85a1c61d4943e768f280eea380d85d3b89ff,300d4f26177342d908d8fb859ced9e21f2ab12e9
4b271d8e0eadb801ccd5047bf2ac433c2cbd9f08,0ce984580945702cb50f17cc7a4cfeeb99ce109f
Clicking a revision will expand files
+ introduced the TEnhancedKeyEvent record
+ added functions GetEnhancedKeyEvent and PollEnhancedKeyEvent and implemented
default fallbacks, which revert to calling GetKeyEvent and PollKeyEvent for
drivers that don't support the enhanced functions
+ also invoke TranslateKey to get more data (either Ascii or virtual key translation)
when converting a TKeyEvent to TExtendedKeyEvent
+ also fill UnicodeChar from AsciiChar if AsciiChar is in the standard Ascii range
(#0..#127)
* switch to using ReadConsoleInputW instead of ReadConsoleInputA in the windows
keyboard unit. This way the console input is read using Unicode and is later
translated to the OEM character set via WideCharToMultiByte. This is will
allow returning Unicode character codes once enhanced key events are
implemented.
- removed redundant setting of result in TranslateKey
+ initial implementation of a windows key event to TEnhancedKeyEvent conversion function
+ added the NilEnhancedKeyEvent const (equivalent to the value 0 of TKeyEvent)
* use x:=NilEnhancedKeyEvent instead of FillChar for setting an enhanced key
event variable to 0
+ overloaded the = operator for pairs of TEnhancedKeyEvent
+ implemented SysGetEnhancedKeyEvent and SysPollEnhancedKeyEvent for win32/win64
* use :=NilEnhancedKeyEvent instead of FillChar to clear the result of ConvertToEnhancedKeyEvent
+ implemented generic conversion from enhanced to legacy key events as well
* handle nil key events properly in ConvertToLegacyKeyEvent
+ switch the win32/win64 keyboard unit to use enhanced key events (they are
converted to legacy key events by the generic converter in keyboard.inc)
+ introduced TEnhancedShiftState. Not used yet, but will eventually be used inside TEnhancedKeyEvent.
+ added generic Shift, Ctrl and Alt values to TEnhancedShiftState
* TEnhancedKeyEvent.ShiftState changed to TEnhancedShiftState
+ detect and return the state of num lock, caps lock and scroll lock in the enhanced shift state on win32/win64
+ introduce TFPKeyEventRecord - a wrapper record around TKeyEventRecord, so it
can store additional data (not added yet) to our keyboard events; this way we
can later add extended shift state (e.g. distinguishing between left and right
shift), etc.
+ add enhanced shift state to the TFPKeyEventRecord object and call
transEnhShiftState only in HandleKeyboard, when the new key event is added to
the queue. This way we can use GetKeyState to determine the parts of the shift
state that are not in dwControlKeyState.
* transEnhShiftState moved to be a local function inside HandleKeyboard to
ensure it's not called outside this procedure.
+ introduced TEnhancedShiftStateElement - an enum type, containing the elements of TEnhancedShiftState set
+ distinguish between left and right shift and detect num/caps/lock key down using GetKeyState
- get rid of the ss:TEnhancedShiftState local variable in TranslateEnhancedKeyEvent
+ introduced unit UnixKvmBase, which is going to contain miscellaneous routines,
commonly used by the unix keyboard, video and mouse units. Currently, it only
contains the UTF8Enabled function, which was moved away from the video unit
and which will also be used by the keyboard unit in the future, as soon as
that unit also gets UTF-8 input support.
+ added a global variable Utf8KeyboardInputEnabled in the implementation of the
unix keyboard unit. Initialize it in SysInitKeyboard with the value, returned
by UnixKvmBase.UTF8Enabled (the same function that checks whether UTF-8 output
should be enabled in the video unit).
+ return enhanced key events in the unix keyboard driver; unicode not supported yet
+ handled the 'center' (numpad 5) key properly in linux, xterm and gnome
* gnome3 (clarifies gnome version tested)
* fixed Shift-F1..F8 on the Linux console
+ added shift state to the escape sequence structure
+ add shift state to TTreeElement and DoAddSequence
* modified ReadKey to return TEnhancedKeyEvent (partially constructed - contains only asciichar and virtualscancode)
* moved ReadKey after GetEnhShiftState, so it can be used to return the shift state
* return the shiftstate in ReadKey
* the variables only used by ReadKey made local, and not visible in its nested routines
* simplify an 'if A' followed by an 'if not A' sequence to 'if A then...else...'
* fixed off-by-one error when putting a character back into the input buffer
+ introduced PutBackIntoInBuf - procedure that returns a key back into InBuf
- removed the IsAlt parameter from ReadKey, because it is not used
- removed the IsAlt local variable, because it is not used
- removed some no longer used commented out code
- removed FAltKey, because it is not used
* set char to 27 for the Esc key (for the linux patched console) in the sequence table
* handle sequences that return both char and scan code
* the type of key_sequence.char changed from byte to 0..127 to enforce ASCII only use
- removed check for the kbEsc scan code, since this is now made redundant,
thanks to the fact that the sequence can return both non-zero AsciiChar
and ScanCode at the same time.
- removed commented out code
- removed commented out code
* simplified the initialization of MyScan, since ReadKey now returns a record, that contains both AsciiChar and ScanCode
* initialize SState from the shift state, returned by ReadKey
* moved the 'if not again' part after the repeat..until loop; it behaves the same, but improves code readability
+ added UTF-8 keyboard input support
* reject surrogate characters when decoding UTF-8 keyboard input
* preserve the unicode keycode returned from ReadKey in the result of SysGetEnhancedKeyEvent
+ add ConvertEnhancedToLegacyShiftState to the interface of unit keyboard
* switch to using enhanced key events in the drivers unit
+ add TEvent.UnicodeChar to the drivers unit
* fixed the linux keyboard patching table for handling F11 and F12 properly
+ also patch Ctrl+F1..Ctrl+F12 when running as root on the linux console, so they can also be read properly
+ added essAltGr to TEnhancedShiftState and added proper AltGr handling for the Linux console
+ added proper Windows AltGr support for the enhanced shift state
+ enable the enhanced key events permanently on windows
- removed the no-longer-used code for dealing with the legacy key events
* CheckAltGr moved above HandleKeyboard, because it will be invoked from there also
* update the keyboard layout info before every keystroke, since Windows can
change between multiple layouts, while the program is running
* optimized UpdateKeyboardLayoutInfo, so it only calls GetKeyboardLayout once
and only performs the HasAltGr check in case the keyboard layout has actually
changed
+ added comments, explaining the enhanced shift states in detail
+ added comment about a Windows bug, which causes the keyboard layout change
detection code to not work
* refactored slightly the BEOS ifdef in unixkvmbase.utf8enabled
* check the LC_CTYPE env var instead of LANG on OpenBSD to check whether UTF-8
is enabled
+ initial attempt at defining an enhanced video cell record for the Unicode support in the video unit
+ added the EnhancedVideoBuf global variable to the video unit
+ introduced OldEnhancedVideoBuf
* use UnicodeString instead of WideString in TEnhancedVideoCell
+ introduced initialization of the video unit in enhanced (Unicode) mode
+ support both legacy and enhanced video buffers in Video.ClearScreen
* fixed off by one errors in the new video unit routines
+ added operator = for comparison of TEnhancedVideoCell records
* switched the windows video driver to use the enhanced (unicode) video buffer
* use CP_OEMCP to convert characters in LegacyChar2ExtendedGraphemeCluster
- removed useunicodefunctions from the windows video unit
- removed the cp850 code page mapping from the windows video unit (it is no longer used)
- removed unused variables and types from Video.SysUpdateScreen
* LineBuf converted to dynarray (to avoid buffer overflow for too big consoles) and made global to avoid reallocating it on the heap on each screen update
* all integers replaced with smallint, in order to be able to introduce objfpc mode
* drivers.pas moved to drivers.inc
+ added drivers.pas that includes drivers.inc
+ introduced unit udrivers, which calls InitEnhancedVideo instead of InitVideo (i.e. enables unicode mode in the video unit)
* views.pas renamed views.inc
+ added views.pas that includes views.inc
+ introduced unit uviews, which is going to be the unicode enabled version of the views unit
* switched the fv units to objfpc mode
* partial unicode conversion of the views unit
+ unicode version of MoveCStr
+ unicode version of MoveStr
+ unicode version of CStrLen
+ unicode version of MoveChar
+ unicode version of MoveBuf
* unicode fixes in TFrame.Draw
* TTitleStr redefined as UnicodeString in the unicode version of the views unit
* unicode conversion of TScrollBar.Init
* unicode version of TListViewer.GetText
* unicode fixes in TListViewer.Draw
* unicode version of SpecialChars
* unicode versions of TView.TextWidth and CTextWidth
- removed the posidx, because it seems to be unused
* TWindow.Title changed to UnicodeString
* outline.pas renamed outline.inc
+ added outline.pas that includes outline.inc
+ unicode version of unit outline
* menus.pas renamed menus.inc
+ added menus.pas that includes menus.inc
+ unicode version of the menus unit
* histlist.pas renamed histlist.inc
+ added histlist.pas that include histlist.inc
+ unicode version of the histlist unit
* app, dialogs, msgbox and validate unites renamed .inc
+ added .pas files that include their respective .inc files for the units app, dialogs, msgbox and validate
+ added unicode versions of the app, dialogs, msgbox and validate units (unicode conversion not completed yet)
* updated the uses clauses of the unicode versions of the app, dialogs, msgbox
and validate units to use only unicode units in their uses clause
+ introduced the FVString type
* use FVString in the interface part of the validate unit
* fvcommon.pas renamed fvcommon.inc
+ fvcommon.pas that includes fvcommon.inc
* fvstring replaced with sw_string in the drivers/udrivers unit
* use ufvcommon in unit uvalidate
* replaced fvstring with sw_string in validate.inc
* use ufvcommon in uviews
* use ufvcommon in uhistlist
* use ufvcommon in unit uapp
* use ufvcommon in udialogs
- reduced number of ifdefs by using sw_string in unit views/uviews
+ use Sw_String in unit menus/umenus to reduce the number of ifdefs
+ use Sw_String in unit histlist/uhistlist to reduce the number of ifdefs
* some interface unit compilation fixes in the udialogs unit
+ introduced type Sw_PString
* more dialogs unit unicode conversion
* umsgbox unit interface unicode conversion
+ use unit (u)fvcommon in (u)msgbox
+ introduced Sw_ExtendedGraphemeCluster
* unicode fixes in the implementation of the TBackGround object
* unicode fixes in the implementation part of the uapp unit
* unicode conversion of the msgbox unit implementation, as well as the FormatStr function
* unicode fix in TDialog.ChangeTitle
* unicode fix in TDialog.NewLabel
* unicode fix in TInputLine.Init
* more unicode fixes in the udialogs unit
* unicode fixes in TInputLine.DataSize
* unicode fixes in TInputLine.Valid
+ more unicode fixes in the dialogs unit
* use a TUnicodeStringCollection in TCluster
+ unicode fixes in TCluster.DrawMultiBox
+ more unicode fixes; the unicode units uapp, udialogs, umsgbox and uvalidate now compile
+ unicode fix in TDesktop.InitBackground
+ initial attempt to switch the unix video unit to enhanced (unicode) mode. Only
UTF-8 is supported for now, and it's not yet implemented for Linux VCSA.
+ implemented StrWidth and CStrLen, using the new extended grapheme cluster string enumerator
+ use the enhanced grapheme cluster enumerator in UDrivers.MoveCStr and MoveStr
+ some fv unicode fixes for supporting complex (multi-char) enhanced grapheme clusters
- disable optimizations to ease debugging
* fixed reference count bug in the unicode version of TView.do_writeViewRec1
* updated unicode example string
- reduced the number of ifdefs in TStatusLine.DrawSelect
- removed ifdefs from TStatusLine.HandleEvent
- removed an ifdef from DisposeMenu
* use SW_PString in TMenuItem to avoid an ifdef
* use Sw_PString in TStatusItem to avoid an ifdef
- removed one ifdef from TMenuView.Load
- cleanup ifdefs from TMenuView.Execute
- removed ifdefs from TMenuView.GetHelpCtx
- more ifdefs removed by the use of Sw_NewStr
+ introduced video.StringDisplayWidth
+ use Video.StringDisplayWidth in UDrivers.StrWidth
+ introduced Video.ExtendedGraphemeClusterDisplayWidth
+ use Video.ExtendedGraphemeClusterDisplayWidth in UDriver.CStrLen in order to support wide characters
- removed no longer used local variable
+ use Video.ExtendedGraphemeClusterDisplayWidth to support double width characters in MoveStr and MoveCStr
+ double width character support in the unix video unit
+ implement TView.TextWidth and TView.CTextWidth via StrWidth and CStrLen
+ unicode fixes in TMenuBox.Draw
+ Unicode aware implementation of TStaticText.Draw
+ unicode fixes for the window title
* reset LastCharWasDoubleWidth in the beginning of every line
+ bug fix in the rendering of double width characters
+ another double width rendering bugfix
+ added scrollbar and listbox to the unicode example
+ use different languages in the list box
+ unicode fixes in TCluster.DrawMultiBox
+ added horizontal scrollbar to the demo
+ enable PInputLine in the unicode demo
+ TInputLine unicode keyboard text input fixed
* fixed handling of non-BMP characters in Video.ExtendedGraphemeClusterDisplayWidth
+ wide and combining character support when determining the cursor position in TInputLine
+ unicode combining and wide character support in TInputLine.Draw
+ wide and combining character support in TInputLine.HandleEvent.MousePos. This
means cursor positioning and text selection with the mouse now works properly
with these special unicode characters
* fixed double width character at the end of TInputLine covering the right
scroll arrow
+ introduced UDrivers.EgcWidth
+ optimization: use EgcWidth instead of StrWidth wherever possible
* fixed compilation of the video unit on Windows
* convert unicode to the cp437 dingbats range (#0..#31,#127) in ExtendedGraphemeCluster2LegacyChar
+ use a table convert_lowascii_to_Unicode to convert unicode to cp437 lowascii and vice versa
+ also convert characters in the range #128..#255 in ExtendedGraphemeCluster2LegacyChar
- removed commented out code
+ handle enhanced video buffer resizing
+ added lpi file for compiling testuapp for windows
* timeddlg.pas renamed timeddlg.inc
+ added timeddlg.pas that includes timeddlg.inc
+ added unicode version of the timeddlg unit
* inplong.pas renamed inplong.inc
+ added inplong.pas that includes inplong.inc
* fixed compilation under Linux
+ added unit uinplong - unicode version of inplong
* tabs.pas renamed tabs.inc
+ added tabs.pas that includes tabs.inc
+ added utabs - unicode version of the tabs unit
* unicode conversion of the non-ASCII characters in statuses.pas
* replaced non-ascii characters to #XXX equivalents
* converted non-ascii characters in stddlg.pas to unicode and #XXX equivalents in the non-unicode version
* converted some non-ascii characters to unicode
* converted non-ascii characters to #XXX equivalents
* replaced high ascii characters with #XXX equivalents and provided unicode equivalents
+ added functions for getting/setting the current code page, when using the
legacy (non-Unicode) video buffer
+ added checks for certain code pages that should not be allowed to be set in Video.ActivateCodePage
* wire up the code page functions to call the driver functions in case of a legacy driver
* use the current legacy console code page in Enhanced2Legacy
* hide the (currently broken, to be fixed) unix internal/external code page
stuff to the implementation part of the unit
* converted internal_codepage and external_codepage to the TSystemCodePage type.
Removed the unused codepage enum constants and sets.
* fixed bug in decide_codepages, which was checking the wrong variable for is_vga_code_page
- get rid of internal_codepage. Set CurrentLegacy2EnhancedTranslationCodePage instead.
* converted tabs to spaces
* converted comments to utf-8, so the file is readable in modern text editors
* return RawByteString in the transform function result
* use FPC's integrated codepage conversion for non-Unicode unix consoles
* rtl-console: fix ; in the previous commit
+ support conversion between legancy and enhanced console in UpdateScreenArea
* win16 compilation fix after merge of unicodekvm branch
AmigaOS4: fix compilation for double UTF8Encode in library unit and system
Amiga: Fix for unable to type in FV applications for Amiga-systems
* return the proper shift state in the i8086-msdos keyboard unit GetKeyEvent and
PollKeyEvent (previously, it was truncated, due to the native int being 16-bit
on i8086)
* fixed bug, where left and right shift were swapped in the i8086-msdos
keyboard unit.
* fixed bug, where left and right shift were swapped in the i386-go32v2
keyboard unit as well.
+ introduced the CurrentLegacy2EnhancedKeyEventTranslationCodePage private
variable in the keyboard unit. It is used for translating AsciiChar to
UnicodeChar in non-enhanced (i.e. non-unicode) consoles. It can be initialized
in SysInitKeyboard in non-unicode consoles, so they can return unicode
characters as well.
+ support 83/84-key keyboards in the go32v2 keyboard unit
+ get the current DOS code page in the go32v2 keyboard unit, so enhanced key
events Unicode characters are returned correctly (provided that the cpall and
fpwidestring unit are included as well)
+ get the current code page in the msdos keyboard unit as well
+ support shift+pgup, shift+pgdn, ctrl+shift+pgup and ctrl+shift+pgdn in the
unix keyboard unit
+ added properties TEnhancedVideoCell.ForegroundColor and .BackgroundColor,
which can store up to 256 colors
- removed spaces at end of line
* attr2ansi changed to accept separate foreground and background color
parameters, instead of single attribute bytes. No functional changes.
* use separate variables for tracking the foreground and background colors
* copy operator of TEnhancedVideoCell now copies the 8-bit foreground and background colors
+ added 256 color support to the Unix console video unit
* fixed the 256-color support for konsole
* changed the video unit initialization sequence, so that the startup cursor
position is preserved at exit (or when switching to the user screen in the
IDE), when running in xterm or compatible (gnome-terminal, konsole, etc.)
+ introduced TEnhancedVideoCell.EnhancedVideoAttributes, based on ECMA-48 and xterm
+ implemented enhanced video attributes in the Unix video unit
+ added test for the enhanced video attributes
* convert advanced video attributes to legacy attributes (emulating bold, italic,
etc. using colors). Also, the blink attribute is converted correctly now.
Enabled mouse support for macOS and *BSD. Free Vision apps can now make use of the mouse for these O/Ss.
+ use the DEC special graphics character set to draw some non-ASCII characters
on Unix consoles that don't support UTF-8 (or don't have it enabled)
+ use some ASCII replacements for certain non-ASCII characters (used by Free
Vision) on Unix consoles that don't support UTF-8
* Dotted filenames for package fv
Properly mirror InitEnhancedVideo with DoneEnhancedVideo in FV.
Restored array of Sw_Word to array of Word as those are ment to be video buffer cells.
Message box have to draw some blank lines.
Contra intuitive: TEditor.SetBufSize should not change BufSize at all
FV Drivers: change name for mouse scroll up/down
FV TScroller and TEditor respond to mouse scroll
FV In ListBox mouse scroll function as Key Up or Key Down
Unit ColorSel reimplemented (partially)
Namespaces in ColorSel unit
Larger Change Directory dialog for larger console/terminal dimensions
Larger File Open dialog for larger console/terminal dimensions
Bracketed paste and OSC 52 in FV
* Correct names, needed for fpmake to work
fvclip unit file name fixes
Editor load files in read only mode
Detach List scrollbar value change of focused item change
FV add mouse triple click
Fix TGroup.IndexOf. Report Last as last not as 1.
Complete ColorSel units load and store procedures.
Implemented dedicated mouse wheel event in FV.
* Example from Margers from merge request !953