Description: rtl-console
This file as text.
(active) Revisions in this set:
cee3065f9321d84ce0d76cf6c016a51814077c54,685d090bf2b5db6671b77e33a39c7594ec42fac3,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,fe60708baca8ae1d15e81ae8f6c1aee2d2b09e85
bf3865a15a9429658c230b017d641e05cc38348b,0e7f562d19387dfd8e60a6f67dd1754496927888,dba71de45bd7b7750383aec27608e092783b50f1
bac79df17e156e6b2cdc457ee586b4cc1957d01d,504bd61c7f56caebec1cf8fd75bbe11d8fe7d1eb,36899f65cf83f3f6f23428c313c561b02bca139e
1c86c0de48b20fdb2dd80fe4c867f4243eb1aa9e,eaa60e45465f1ab252030ee8fb79d201a6872a3c,4034dcc2c68797c8159978fe6d5a68b550a589c6
ead1eab3d7342ac6476ee87e871f6214872e5b1f,b5575c0829373904a10e532dac7ef26764705ad6,e583341877ff53bff386d038c2e387a224751121
837659f4201aab4fee9c8678fe51ac8a3218ca16,c964eab85d726ede55c745c4a0b9187fada7c858,6aa8b718f46b6926836aff4e40cda9e868701eb8
86fa90b400d87c26c3136734d4d5eb408811f83a,8aacea88504fda6d66e6026e223ef01a87ac37b6,c6b0195c5f248a3d2154ccb9ce5dcdf62867e1ea
95ced4a7f55ce63bda60c0d3f6e37427650a0df7,8b31df70672bd6e7f949416ac18bff68326ded1c,571095773aa21f75755eb19c928568e0edd32ed2
17d6999726b0a5a77ff029e05c20558a8bb7bf2c,b8dfa1b8e68946db2ce52deb37c681eccba73418,f8320dff082272a41e6a2d6d0f8a5ba50b4ea80b
3f852e1444278f8d146f93cd39cdf239f0fc93e2,0d1fef96a1d0b4c7c70f9eed24b6a8997e3e109b,b13c8e3ef68607a7a37694fc1605dbb743e8650b
ea3124ed4af17414c0526ffac7a80b6ac6178842,cb6ba25e1b1a23ac2dfb3c17afb6ada075b54b9b,d5283cae7fa84ede4b82743a762bebd51ede8a55
d4913f490f30a2f4521573fadd6229f0a7e6402a,2746b0e035f558d7b67366a5633f929e73ed452e,453bdaaafc71dcc467528063395aa3188886df6d
11db30ab3d347f358f6ca5e86bc1640f8930c11c,4864aba47a325c28674bc9581ed2cde92b94b016,6109c5606624c41923a1b3bb5ba2107e586ef2a9
ec0fa8f46f25ec4f307486dc6fc9b7fe2d8c3bc0,834a6579d7ea7caab3b8e40d2a94ab6bda4dc198,818d3f2f6c112fd8c2fb70e7128e198eb7a0d1aa
fdfc40e86bcfaa5f45bdc87eb8fa74a01b3be8f6,cc643608a22e9410c9d6391f40a7ffd9480aa9eb,4944e9296fc9c3b55367babf31928e8fa7169369
ca1b315e2799cc3c94e9485312d1b7d2b36a60fb,7b71eefbdfeab44a93695f93dfefac81fa8d09fb,c669b8ac83adfd33d415f1e52cfca03a36cb74bb
c63534af487eb2972f258fcf5d84a91f9c902095,38ef18b4f4af21230d751a546f71065ecd3512af,3c3f43ac665385b2c259c5930da9452682ba3cb8
2f442ab6d09cee0c7675eee9578288609f6fc510,306cfa83e4f044665e23369d2ddd1bb513c8b839,b681e2cd7fb8c12eb55d374b2adc7e247706205f
2181e7c61d14e894cabe6bae050720561164b685,87777ea10b5285a27ac3cc4e387ee65392bbb6b1,af19d2a98285e96995898cfee325f97cd706a9b2
2abcf62a958476ba80b78b3c7875d9272d9f7e90,14af3cb5cb48b39589a28dfd34618cdcd6000ca0,a4db719eb4ff6d62a733c0042c0b10716b0f141f
df95478d19bceedd41a86dbc3c8c006e91b2a0a3,c6bce8915ff4b0a53ce295d6d14da5ebce9dd200,77279fb5ef2f4712d38ccd1fcab59f9f9e9802e1
ed670d2ce7ea9d99f1dbd915d5adbd41f5467137,ed0ec9468095a870767b3cf0e54a9603548bcd98,ce9e1e84669018bcd10c9cf3b163af37b66e0c54
40eede3a7a778d383ce2156a595069b320fd8aa0,1c961a498677e41dd210869e4877a27a21cbddfd,da569e952e0123da0e54570dfe32b5377e671939
15ff16d85218ad77941878493af4b120cb11da47,810e62b7c9ab3e56f6c49e4a2a5b2b297dfbfd0e,820e0dddcdce4beac67320a4a3d683f00db46883
51996d628079dbbf5f6aa74d55674a1ba1bad2d3,c1f6a7afdd035f96168c58b3af8e453962c69de7,e1a75bf6588284851b11c20f55791b496a764a86
8117c97d921cb0b56f4e958a0ddb7b6d34acf0dd,c0d57d03c232bafa06d80fee74b07e91300944c5,5264e48d90a97e2dcfc5410410d60c1ecc14a824
cc7c328a7cf5b236e53c26b6b517fee0006f45a1,4fe5e53fcc6236fa44441dcba69cc2d274febd3c,9894fe8082531f80de22c5dab342104b800d789a
d3de4b59512915d19f7f06dcdb3a836ad6816feb,5a8434234869887dae77479507af8bdc94c11cf0,6146aa6eb6d9ce9906aa14fc80cfb9446d74479d
db39d1a4e4af8d543db22dbf85abc1c0e4dc522e,2f82a084e838f90ed5329f707ea98d7e9908ff82,0b8a0fb495ded3cc71e4a44c6174216922ebcd36
6df6e4f7ff16ea4ed9db2a1215cd2b2f262a0331,af5f75fd5adc53383a654e8f9849117c2219fe52,41e32d0fbad6ad541959802590c4cdb12d857cbb
398c6519a541c47a6d86271daae53b2562fee0ee,55b8fd6e9425fe627352930a716c0871393e7d96,4ed7bd9f668123b7a20a2f871ed36a024e41596f
91ccf4e9c643917472cd55d42094c2a1c29e05ac,e1e939c844b4c285cdb52be178b938f5e9a44a0e,c881067b2395609448fdc7b49fce076b13ffae93
501b2d6c6f48a43a1cf695fac795abca45cd0536,6345a25304ed2de2cd28dadc24e4b5bc57d1a7c2,25a681295a2ee176bd00493b02addc8cbc384139
ac9feac2c86dfd118f017f7462072805be95ec97,aee5a58000dcc2f7c0dd6fa0bc6bffacf07470af,e79fbff1545e41545141a14e1c4953d301370c7a
61623c43ca57cce7deec020cf68e9cabc683ad57,3eae0213be485a9c4a7384796bb4639ae3317cc9,3564d5e34a9a3dfa02ddef37ec9498afa40848e0
28732fffa2f153ea55cd450a075ab484111a2e7a,0d9298f01aaaf8c137bef8ad4fc8f7a603e70db7,5121e2c259c12411ea77fac454a83e498f0bd7d8
921a72566f396e58fad456700d34cac40830d935,f49675c4fe286879131001986f7707fc3aad2ac6,f227efb2589e121cbeed03ab1024b89b25674615
f67c4b1c454ba1d62a8a83db3fa93752a2ee7457,95ba16228a8018187bf4e1a1d6324ede023efede,1853e94b98100336410c9093ce5f6ff2c63a3bf4
a8a778395b2dfbb73f1b64bf2e574e661354aee8,6df876e5460e0df1bd1f095507c335bb6fb1a30c,ae81a69cb15a979a00afb3ed7a1bae5022d33bff
d1e239f3c497ecaa770cc162b3a2c7668fa7aab6,69e7ffadba6ea06c82ae706349b6e1e46ca072f5,ca03194927cb28f787c797149e92e6c219bc7b6c
ede78f682bd58132356bc6a29cfcf70df0dfad70,aeb17a48fc82636dc9e82da0ecb3bfa2c6b05b18,8fd249807e3d75c74c648b350256a5584ea1cf02
8b1824ab3413c13f054f7e73494ff0c6449679c5,2141465c58344f56fde321bda4d34c04f7d35946,bda49f7219492ee7a3969790839de81de513b3b8
a0fe88b60fb73ee24c27c214f55907722dcfdaf3,9073615dea4160ccd37bccaa0dfd78a1d1338c63,5acf85a932b7afeed5d0c53e1160abaabe5115da
f0257e8424bc88a93e3b082c6e733dfe28bf94a4,beb8e63075e5caeeb13b3b6b8c4de57bcaa7b103,714c0a312fa350f0eb443da1902bfb97bdb49108
89af29c27f121fd1327795b5dc781bb0a2fce5a6,34b2fa27f509d210668625dfb9b25d36ac7f6c34,00a8bb2ae979befdd3ded4346a9865a62bca4722
0cad75f3189bdab4bc78ecf0a52071104d45c753,49a46d107c48335a8160a59696ce38bdc459aa0f,13f44e0284b03135489034cee932708fa0cb2303
34f50766e1e01a3cddb2c2b28da6ad08923cf020,57092e3336497c4e75f6bc48374a3a69aa3b8d11,2757e8f299731aa7b200e68d23bbe1828563a77b
befdeb9f237a85cc447859b1de6edd9aa902971c,97e62a49997405c8c835452614f47cd6ccba96f6,1ac1b12a3a4c01b902021903f2f9a37ec4328d76
a6c2ea2a98304f09289060b8a0b893aa40654f80,38fda54ec6f5031a3d3d9dfdead3b4f3d3f0d4a2,2a4661a99b92906b02eebe027535616e625d9a52
3da92b35a9c3fd8ec6fb444a309f214cf239f9e7,de8c8d3633e56f471d56c3c87bf1f9e6feb88f7e,ba0404766e1f0b6133bff32ec8c1f69338a84ada
40cd922b7be16279334a6ac0666863dcb067e95d,91d00a3a16be4b0f631da4854c7832255d98c9cc,0b298c398af7f7fd9e4aff9a489166227b1aabd5
cd7350a81a1ba97aa2a4848631598599a9bb5b66,ee030e31b7453658cc6ad05faeeecea29a44407d,d58d0a55541a134d03d37a4a007c22386f02c56b
f2cfcdab3bf2d6e8c84ee337cd6516579c6544ac,7fa4524305a2b32fd29a9019ab94f51b90afa36e,8d4ad501bde7289b3d5890efe508f4b00754d964
61c4c65b670c0b951cd02cb2f58879b70b9579e2,5e5764ce309467cf04b6de28ed0664175b7aa79e,dcd81891550e7ebabdba5b3b069c1044d28d23f7
339d0d832aa2d37f0c5654fa429872a4258efa6a,6920f0d068223679b4ac0a69fbcffd02e26747fa,ed107f8164dbe9c4e398c5803330f45c44659b24
aac79fba7b7b657ae13cd120aa8c11e6961b63b3,167d3e538f47a7a4a9210c677b22eaa2cabe5882,fce3b6539b8ad57a9748826595a4b12d4dd7ea69
524cb571f42e2c1101c807948e043a5d8b8c30f3,f69a0f01ec2aacaffc57b9d29d665accfe09fc6a
Clicking a revision will expand files
+ introduced the TEnhancedKeyEvent record
+ added GetEnhancedKeyEvent and PollEnhancedKeyEvent to TKeyboardDriver
+ 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
* 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
amiga: Crt, fixed cursor x and y position
Amiga: Video unit, do not draw Cursor if outside the window (would write over the window border)
Amiga: keyboard prevent double keys on GetKeyEvent, if called without PollKeyEvent
Amiga: special CRT unit (named vidcrt) based on video unit
rtl-console: fixed keypressed implementation in the Amiga VidCRT unit
Amiga: optimized video unit drawing
Amiga: make the fullscreen video draggable, map Help Key to F20
+ 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 TVideoDriver.InitEnhancedDriver
+ 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
+ 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.
+ introduced video.StringDisplayWidth
+ introduced Video.ExtendedGraphemeClusterDisplayWidth
+ double width character support in the unix video unit
* reset LastCharWasDoubleWidth in the beginning of every line
+ bug fix in the rendering of double width characters
+ another double width rendering bugfix
* fixed handling of non-BMP characters in Video.ExtendedGraphemeClusterDisplayWidth
* 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 graphemebreakproperty and eastasianwidth to the video unit uses clauses of all the remaining operating systems
* fixed compilation under Linux
+ 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
+ introduced legacy code page functions to the video driver itself (they can
optionally be implemented for operating systems with non-unicode consoles)
* wire up the code page functions to call the driver functions in case of a legacy driver
+ implemented GetSupportedCodePageCount/GetSupportedCodePage for unicode consoles
* use the current legacy console code page in Enhanced2Legacy
* 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
Amiga, MorphOS, AROS: unified function results to LongBool in amigados unit, correct type for GFXBase
Amiga video unit: fixed not initialized TInputEvent field
Amiga video unit: fixed not initialized TInputEvent field, 2nd try, now the deadkeys actually work as they should
Amiga: Workbench 1.x compatibilty via the AMIGA_V1_2_ONLY define
Amiga: Implemented GetVar for 1.x
amiga: FPC_DOKEYCONVERSION env var if key conversation Ansi to IBM should be done for every key
amiga: removed some debugging settings
* rtl-console: always compile Amiga KVM units in OBJFPC mode. This makes it easier to compile these units outside of this package
* rtl-console: slight refactor of how Amiga SysUpdateScreen() addresses the videobuf. this results in slightly more optimal code with less complex addressing, which helps low-end processors
* rtl-console: on Amiga, remove the initial testing of the buffer for changes. it just slowed things down with frequent partial updates, especially on low-end processors with limited or no data cache
* rtl-console: on Amiga added a custom screen update call, to do partial screen updates. doing a full update can be very slow on low-end systems (checking the entire screen buffer every time), so software tuned for these can now request partial updates, when the updated already is already known
* rtl-console: generalized the partial screen update feature which was added to Amiga. the function was renamed to UpdateScreenArea(). it's still an empty call on other platforms, that falls back to UpdateScreen() but the infrastructure is now there to support it.
* rtl-console: fix ; in the previous commit
rtl-console/amicommon: set the window's UserPort to nil before closing, as recommended
rtl-console: use videoDefaultFlags variable on Amiga for WA_Flags. disable smartrefresh in full screen, also respect the FPC_VIDEO_SIMPLEREFRESH env var
rtl-console: quickfix for Amiga UpdateScreenArea() so it properly updates multiple lines
+ support conversion between legancy and enhanced console in UpdateScreenArea
* Amiga compilation fix after merge of unicodekvm branch
* win16 compilation fix after merge of unicodekvm branch
AmigaOS4: fix compilation for double UTF8Encode in library unit and system
* 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 rtl-console
Block insert cursor. Block cursor for overwrite mode in xterm
Branch to save Enhanced video buffer or Legacy video buffer (Unix).
Implementation of Kitty keys and xterm - ModifyOtherKeys (Unix keyboard)
Enable mouse in pterm (putty)
Windows console mouse - scroll up and down events
Additional function key escape sequences for rxvt (urxvt)
In console enable mouse buttons browse back/forward (xterm Unix)
Go32v2 and msdos mouse is zero based. Fixed GetMouseX, GetMouseY and SetMouseXY.
make file gitlab web interface friendly
Silent key apostrophe. Fixed problem for Windows Textmode IDE in Linux under Wine.
Console keyboard shift states in Unix
Multi byte mouse report format for rxvt (Unix)
rtl-console/amicommon: added a way to redefine colors externally in the video unit
RawReadString is limited to length of shortstring, don't read more than that
Correct mouse button mapping under Unix
Escape key press while rapidly move mouse don't print escape sequence on screen
No mouse up events for mouse wheel.
Exposes in interface ConvertToLegacyKeyEvent.
Show mouse with new Free Vision Enhanced Video in linux console.
GPM report two additional buttons.
Hide debug info. Use constant in expr instead of variable.
Mouse wheel generate only down action.
Fix assembler syntax error in last commit
Do not localize shortcut keys when using Kitty keyboard protocol.
Kitty keyboard protocol fix F1, F2 and F4 keys.
Fixed hotkeys problems left after https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/1138
See https://gitlab.com/freepascal.org/fpc/source/-/merge_requests/1138#note_2734591449 for details
Support non-lating Alt+char hotkeys in legacy terminals also
Added support for win32 input mode
Spec:
https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md
Fixes
gitlab 0040672
TV_INPUT env var for manual input protocol selection
- Fixed kitty input mode accidently broken by win32 input mode implementation
- Fixed Shift+Tab behavior under win32 input mode
- Fixed Del key behavior in win32 input mode
- Fixed Alt+non_latin_letters and Ctrl+arrows in legacy mode
- Added simple keyboard events debug tool
- Fixed and error causing kitty protocol being used even if other one is selected as preferred
Apply 1 suggestion(s) to 1 file(s)
Co-authored-by: Margers
Fixed doubling of ESC key events in kitty and legacy modes
Fixed wrong condition (Alt+NonLatin top menu hotkeys now work again)
This commit significantly enhances text input and editing in non-Unicode environments on Unix-like systems. The video unit now automatically detects the appropriate legacy (OEM) codepage based on the LANG environment variable, replacing the previous hardcoded default. This allows applications using Free Vision, like the built-in editor, to correctly display at least the most frequently occurring symbols in various legacy encodings. Furthermore, the keyboard unit now correctly translates Unicode key input into the detected single-byte codepage, enabling proper input of national characters, such as Russian, even in non-Unicode builds.
Based on
https://github.com/elfmz/far2l/blob/14c12dcfe29b42ac6870716bcb58012656b468a1/WinPort/src/APIStringCodepages.cpp
Fix types according to
https://gitlab.com/freepascal.org/fpc/source/-/commit/38fda54ec6f5031a3d3d9dfdead3b4f3d3f0d4a2#note_2840311283
Fix lately broken Xterm Modify Other Keys keyboard protocol implementation.
Fix kitty keyboard protocol keys F1, F2, F4 (2nd attempt).
Fix Video unit doted name in uses.
* Easy-to-use Ansi escape sequences
Mouse is zero base. Fix it for go32v2 and msdos.
Report only uniq mouse events in DOS.
Allow arbitrary screen dimensions on Windows console resize. As well full screen allowed.
Adaptive Windows console size.
Windows mouse scroll x,y position fixup.
Enable mouse for BSD. No mouse wheel for BSD.
Disable Kitty keys for Haiku. Escape sequence have different meaning.
Enable some keys for Haiku terminal emulator.
Fix for Win32 input keyboard protocol.
FindSequence expose TTreeElements in interface.
Revisions in bigsets in this set 0e59e9ec6c8eebbc0e672c8e005d401bd871fb70