Before explaining difference between Linux version and others,
I'll show,you may know, some difference between UNIX and DOS
which I found in porting work.
- FileName.
. No DriveID under UNIX.
. Directory separator is "/". It is "\" under DOS.
. Case sensitive filename. Command name is usualy by lower case.
. "." and ".." is allowed as filename char.
Bash(Linux shell) interpret "!" and it should not be used.
. "*" and "?" is allowed as filename char,but shell expand it.
Command "rm *" to delete filename * will delete all member.
. "~" means home directory.
. Wildcard "*.*" dose not match to filename embedding no ".".
- File operation.
. 0x1a(Ctrl+z) is not EndOfFile ID.(it can be read beyond EOFID).
. File and Dir has permission.
And,when a dir has t-bit on it is protected from rename/unlink
by other than root or owner.
Files in a dir with x-bit off is not shown.
Permission setting of mkdir is controled by umask setting.
So another chmod may required.
Permission of file on DOS partition mounted cannot be changed.
. File timestamp unit is second.(Dos is by 2 seconds).
. Cd command without operand means cd ~(change to home dir).
#ifdef XXE
(following about keyboard are irrelevant to gxe)
#else
- Keyboard.
. DOS feedback pair of scancode/charcode,UNIX translate keycode
and returns Escape seq string for extended key like as F1,Ins...
(Under X, another translation is done,but terminal emulator like as
xterm generate Esc string corresponding to the X key event.)
For ex, \x1b[2~ by Insert key.
Following description is for Fullscreen Console mode only. See (4) for X(on Terminal Emulator) mode.
Strings are set on Terminfo Database(/usr/lib/terminfo) determined
by TERM env-var,but it shows just how program like as shell pgm
understand those strings. Key and string mapping is set by
loadkeys cmd. Mapping file is in /usr/lib/kbd/keytables.
Usualy key generate the string defined on Terminfo.
Loadkeys cmd may be used to change this mapping.
. Mapping file identify left and right Alt key.
. "dumpkeys" cmd shows current mapping.
Output of dumpkeys is also used for input of loadkeys.
Sample output format of dumpkeys is as following.
(It is my understanding and it may have error)
1) keymaps 0-2,4-6,8-9,12
2) alt_is_meta
3) keycode 1 = Escape F83
4) control keycode 1 = F84
5) shift alt keycode 1 = Meta_Escape
6) keycode 60 = F2 F14 Console_14 F2
7) alt keycode 60 = Console_2
8) control alt keycode 60 = Console_2
:
:
:
9) string F1 = "\033[[A"
string F2 = "\033[[B"
string F3 = "\033[[C"
:
1) Mapping index.
It specify correspondance of each columns with shift key.
Each digit is constructed with 0:Normal,1:Shift,2:AltGR(Alt-R),
4:Ctrl,8:Alt(Alt-L),16:Shift-L,32:Shift-R,64:Ctrl-L,128:Ctrl-R.
Sample line specify column left of "=" is sequecialy
Normal(0),Shift(1),AltGR(2),Ctrl(4),Shift+Ctrl(5),AltGR+Ctrl(6),
Alt(8),Shift+Alt(9),Ctrl+Alt(12) each.
2) Alt+x(char key) generate Meta-x char.
Meta-x is determined by setmetamode setting.
That is Esc+x or 0x80|x. For example,Alt+a is 0x1b61 or 0xe1.
3) This is Function name assigned to a keycode.
Keycode value is shown by showkey cmd.
This example is that keycode 1 is for Escape and for F83
with Shift+. F83's meaning is determined by each application.
Mapping file can only define strings generated by the key
combination. 9) is sample string definition.
4),5),7),8)
Another format of Shift key combination.
6) F14 is assigned to Shift+F2. AltGR+F2 is for Console14,
but max number of console supported is limitted.
7) Alt(Alt-L)+F2 is assigned to console2,that is,Alt+F2 switch
screen to another console.
9) Strings are defined for each Fxx.
. Combination with Alt key is sometimes intercepted by operating
system itself or shell.
. xe,at the initialization,assigns strings to functions using API
like as loadkey command do.
Esc string assingnment is allowed only for Fnn key.
xe assign Fnn to key combination(Shift/Ctrl/Alt) which is used by xe.
String assigned to Fnn is set to xe format which is constructed by
scancode, charcode and modifier key ID, that is \x1B~+scancode+charcoe+shiftid.
See (9)-(a) for mapping of key combination and scan+char code.
ex) F48 is assigned to Alt+F12 with \x1b~8C003.
F48 is function name assigned by xe to Alt+keycode 88.
\x1b~ is id of string by xe. 8C00 is scancode+charcode for Alt+F12
defined on PCDOS.
Shift id is 0:No shift, 1:Shift+, 2:Ctrl+, 3:Alt+.
These are set also by Linux command "loadkeys".
Under kon(Kanji ON console),assign API is not avail.
So use "loadkeys xej106.map" for xe before enter to kon.
For compatibility with other application,strings defined on
terminfo is not changed and accepted.
For ex,"^[[[A" is usualy assinged to F1 by terminfo library
(/usr/lib/terminfo/l/linux), and xe accept it.
See (9)-(b) for default translation accepted by xe.
#endif
- Screen.
#ifdef XXE
. gxe allow background color change by color-dialog from Setup pulldown
menu. Foreground colors are changed by gxe option 0 on top menu.
#else
. curses routine support color control.
Linux may not support background highlight.
. There is no method to change cursor shape in curses library.
#endif
- Other miscellaneous.
. Use "-" as command flag parameter(DOS use "/"),
and allow parm with value,for ex,by both "-o fnm1" and "-ofnm1" fmt.