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
91ccf4e9c643917472cd55d42094c2a1c29e05ac,c881067b2395609448fdc7b49fce076b13ffae93,501b2d6c6f48a43a1cf695fac795abca45cd0536
6345a25304ed2de2cd28dadc24e4b5bc57d1a7c2,25a681295a2ee176bd00493b02addc8cbc384139,ac9feac2c86dfd118f017f7462072805be95ec97
aee5a58000dcc2f7c0dd6fa0bc6bffacf07470af,e79fbff1545e41545141a14e1c4953d301370c7a,61623c43ca57cce7deec020cf68e9cabc683ad57
3eae0213be485a9c4a7384796bb4639ae3317cc9,3564d5e34a9a3dfa02ddef37ec9498afa40848e0,28732fffa2f153ea55cd450a075ab484111a2e7a
0d9298f01aaaf8c137bef8ad4fc8f7a603e70db7,5121e2c259c12411ea77fac454a83e498f0bd7d8,921a72566f396e58fad456700d34cac40830d935
f49675c4fe286879131001986f7707fc3aad2ac6,f67c4b1c454ba1d62a8a83db3fa93752a2ee7457,95ba16228a8018187bf4e1a1d6324ede023efede
a8a778395b2dfbb73f1b64bf2e574e661354aee8,6df876e5460e0df1bd1f095507c335bb6fb1a30c,d1e239f3c497ecaa770cc162b3a2c7668fa7aab6
69e7ffadba6ea06c82ae706349b6e1e46ca072f5,aeb17a48fc82636dc9e82da0ecb3bfa2c6b05b18,8b1824ab3413c13f054f7e73494ff0c6449679c5
2141465c58344f56fde321bda4d34c04f7d35946,a0fe88b60fb73ee24c27c214f55907722dcfdaf3,9073615dea4160ccd37bccaa0dfd78a1d1338c63
5acf85a932b7afeed5d0c53e1160abaabe5115da,714c0a312fa350f0eb443da1902bfb97bdb49108,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,dcd81891550e7ebabdba5b3b069c1044d28d23f7
339d0d832aa2d37f0c5654fa429872a4258efa6a,ed107f8164dbe9c4e398c5803330f45c44659b24,aac79fba7b7b657ae13cd120aa8c11e6961b63b3
167d3e538f47a7a4a9210c677b22eaa2cabe5882,fce3b6539b8ad57a9748826595a4b12d4dd7ea69,524cb571f42e2c1101c807948e043a5d8b8c30f3
f69a0f01ec2aacaffc57b9d29d665accfe09fc6a,6d7b4b4bb572151f22681e59cf9d011c381260fb,c43d9777ae015d98482470f9c10e6ba7d14a8def
ca233abc7a7fa62a1e1976d46d59855ed5e08576
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
+ 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.
+ 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.
+ 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
Branch to save Enhanced video buffer or Legacy video buffer (Unix).
Implementation of Kitty keys and xterm - ModifyOtherKeys (Unix keyboard)
Additional function key escape sequences for rxvt (urxvt)
Go32v2 and msdos mouse is zero based. Fixed GetMouseX, GetMouseY and SetMouseXY.
make file gitlab web interface friendly
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
Escape key press while rapidly move mouse don't print escape sequence on screen
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.
Allow arbitrary screen dimensions on Windows console resize. As well full screen allowed.
Adaptive Windows console size.
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.
Video tear fix for legacy video buffer resize. Fixes issue
gitlab 0041688.
Optimize legacy to enhanced video converter routine. Properly fixes issue
gitlab 0041688.
Properly initialize obtained screen buffer.
(inactive) Revisions in this set 398c6519a541c47a6d86271daae53b2562fee0ee,55b8fd6e9425fe627352930a716c0871393e7d96,4ed7bd9f668123b7a20a2f871ed36a024e41596f,e1e939c844b4c285cdb52be178b938f5e9a44a0e,f227efb2589e121cbeed03ab1024b89b25674615,1853e94b98100336410c9093ce5f6ff2c63a3bf4,ae81a69cb15a979a00afb3ed7a1bae5022d33bff,ca03194927cb28f787c797149e92e6c219bc7b6c,ede78f682bd58132356bc6a29cfcf70df0dfad70,8fd249807e3d75c74c648b350256a5584ea1cf02,bda49f7219492ee7a3969790839de81de513b3b8,f0257e8424bc88a93e3b082c6e733dfe28bf94a4,beb8e63075e5caeeb13b3b6b8c4de57bcaa7b103,89af29c27f121fd1327795b5dc781bb0a2fce5a6,5e5764ce309467cf04b6de28ed0664175b7aa79e,6920f0d068223679b4ac0a69fbcffd02e26747fa
* 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.
+ support 83/84-key keyboards in the go32v2 keyboard unit
Enabled mouse support for macOS and *BSD. Free Vision apps can now make use of the mouse for these O/Ss.
Block insert cursor. Block cursor for overwrite mode in xterm
Enable mouse in pterm (putty)
Windows console mouse - scroll up and down events
In console enable mouse buttons browse back/forward (xterm Unix)
Silent key apostrophe. Fixed problem for Windows Textmode IDE in Linux under Wine.
RawReadString is limited to length of shortstring, don't read more than that
Correct mouse button mapping under Unix
No mouse up events for mouse wheel.
Report only uniq mouse events in DOS.
Windows mouse scroll x,y position fixup.
Revisions in bigsets in this set 0e59e9ec6c8eebbc0e672c8e005d401bd871fb70