1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- program mkkeytab;
- {
- This program takes the keyboard scan code definitions, (the const section
- of the rtl/unix/keyboard.pp file) and outputs a
- latex table. The final output is done with some reformatting with the
- following sed commands:
- mkkeytab | sed 's/[aA]lt/ALT-/g' | sed 's/[Ss]hift/SHIFT-/g' | sed 's/[Cc]trl/CTRL-/g' > keys.tex
- }
- uses sysutils,classes;
- Function ScanLine (S: String) : String;
- Var
- I : Integer;
- KN,KC : String;
-
- begin
- I:=Pos('=',S);
- Result:='';
- If I<>0 then
- begin
- KN:=Trim(Copy(S,1,I-1));
- Delete(KN,1,2);
- Delete(S,1,I);
- I:=Pos(';',S);
- If I<>0 then
- begin
- KC:=Trim(Copy(S,1,I-1));
- Delete(KC,1,1);
- Result:= KC+' & '+KN;
- end;
- end;
- end;
- Var
- F : text;
- List : TstringList;
- I,RowCount : Integer;
- S: String;
- begin
- List:=TstringList.Create;
- Assign(f,'keys.txt');
- Reset(f);
- While not eof(f) do
- begin
- Readln (f,s);
- S:=ScanLine(s);
- If S<>'' then
- List.Add(S);
- end;
- RowCount:=List.Count div 3;
- if (List.Count mod 3)<>0 then
- begin
- Inc(RowCount);
- List.Add('');
- List.Add('');
- end;
- For I:=0 to rowcount-1 do
- Writeln(Format('%-20s & %-20s & %-20s \\',[List[i],List[I+RowCount],List[I+2*RowCount]]));
- end.
|