summaryrefslogtreecommitdiff
path: root/irdecoderunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'irdecoderunit.pas')
-rw-r--r--irdecoderunit.pas92
1 files changed, 53 insertions, 39 deletions
diff --git a/irdecoderunit.pas b/irdecoderunit.pas
index c9917a7..da9a424 100644
--- a/irdecoderunit.pas
+++ b/irdecoderunit.pas
@@ -5,7 +5,7 @@ unit irdecoderunit;
interface
uses
- Classes, SysUtils, lesethreadunit, lowlevelunit;
+ Classes, SysUtils, lesethreadunit, lowlevelunit, process;
type
tBefehlsWort = (
@@ -51,40 +51,40 @@ const zeichenTabelle: array[tBefehlsWort] of longword = (
$4c06,$7406,$6c06,$1207
);
const befehlsTabelle: array[tBefehlsWort] of tBefehl = (
- (einzelKlick: true; toDo: '0'), // 0/10
- (einzelKlick: true; toDo: '1'), // 1
- (einzelKlick: true; toDo: '2'), // 2
- (einzelKlick: true; toDo: '3'), // 3
- (einzelKlick: true; toDo: '4'), // 4
- (einzelKlick: true; toDo: '5'), // 5
- (einzelKlick: true; toDo: '6'), // 6
- (einzelKlick: true; toDo: '7'), // 7
- (einzelKlick: true; toDo: '8'), // 8
- (einzelKlick: true; toDo: '9'), // 9
- (einzelKlick: true; toDo: '2/12'), // 2-/12
- (einzelKlick: true; toDo: 'Power'), // Power
- (einzelKlick: true; toDo: 'Punkt'), // Punkt
- (einzelKlick: true; toDo: 'PfeilInKasten'), // PfeilInKasten
- (einzelKlick: true; toDo: '|>'), // |>
- (einzelKlick: true; toDo: '<|'), // <|
- (einzelKlick: true; toDo: '<<'), // <<
- (einzelKlick: true; toDo: '>>'), // >>
- (einzelKlick: true; toDo: '||'), // ||
- (einzelKlick: true; toDo: '>'), // >
- (einzelKlick: true; toDo: '[]'), // []
- (einzelKlick: true; toDo: 'P+'), // P+
- (einzelKlick: true; toDo: 'P-'), // P-
- (einzelKlick: true; toDo: 'Stumm'), // Stumm
- (einzelKlick: false; toDo: 'L+'), // L+
- (einzelKlick: false; toDo: 'L-'), // L-
- (einzelKlick: false; toDo: 'K-'), // K-
- (einzelKlick: false; toDo: 'K+'), // K+
- (einzelKlick: false; toDo: 'H-'), // H-
- (einzelKlick: false; toDo: 'H+'), // H+
- (einzelKlick: true; toDo: 'rot'), // rot
- (einzelKlick: true; toDo: 'gruen'), // gruen
- (einzelKlick: true; toDo: 'gelb'), // gelb
- (einzelKlick: true; toDo: 'blau') // blau
+ (einzelKlick: true; toDo: 'echo 0'), // 0/10
+ (einzelKlick: true; toDo: 'echo 1'), // 1
+ (einzelKlick: true; toDo: 'echo 2'), // 2
+ (einzelKlick: true; toDo: 'echo 3'), // 3
+ (einzelKlick: true; toDo: 'echo 4'), // 4
+ (einzelKlick: true; toDo: 'echo 5'), // 5
+ (einzelKlick: true; toDo: 'echo 6'), // 6
+ (einzelKlick: true; toDo: 'echo 7'), // 7
+ (einzelKlick: true; toDo: 'echo 8'), // 8
+ (einzelKlick: true; toDo: 'echo 9'), // 9
+ (einzelKlick: true; toDo: 'echo 2/12'), // 2-/12
+ (einzelKlick: true; toDo: 'screen -d -m /usr/bin/shutdownasap'), // Power
+ (einzelKlick: true; toDo: 'mocp -o s'), // Punkt
+ (einzelKlick: true; toDo: 'mocp -u s'), // PfeilInKasten
+ (einzelKlick: true; toDo: 'mocp -f'), // |>
+ (einzelKlick: true; toDo: 'mocp -r'), // <|
+ (einzelKlick: true; toDo: 'mocp -k -5'), // <<
+ (einzelKlick: true; toDo: 'mocp -k +5'), // >>
+ (einzelKlick: true; toDo: 'mocp -G'), // ||
+ (einzelKlick: true; toDo: 'mocp -p'), // >
+ (einzelKlick: true; toDo: 'mocp -s'), // []
+ (einzelKlick: true; toDo: 'playlist +'), // P+
+ (einzelKlick: true; toDo: 'playlist -'), // P-
+ (einzelKlick: true; toDo: 'stumm -t'), // Stumm
+ (einzelKlick: false; toDo: 'lautstaerke +1'), // L+
+ (einzelKlick: false; toDo: 'lautstaerke -1'), // L-
+ (einzelKlick: false; toDo: 'lautstaerke -5'), // K-
+ (einzelKlick: false; toDo: 'lautstaerke +5'), // K+
+ (einzelKlick: false; toDo: 'lautstaerke -25'), // H-
+ (einzelKlick: false; toDo: 'lautstaerke +25'), // H+
+ (einzelKlick: true; toDo: 'playlist -r'), // rot
+ (einzelKlick: true; toDo: 'echo gruen'), // gruen
+ (einzelKlick: true; toDo: 'echo gelb'), // gelb
+ (einzelKlick: true; toDo: 'echo blau') // blau
);
// tIRDecoder ******************************************************************
@@ -133,8 +133,10 @@ end;
procedure tIRDecoder.befehlAusfuehren(lw: longword);
var
- neu: boolean;
- bw: tBefehlsWort;
+ neu: boolean;
+ bw: tBefehlsWort;
+ output: string;
+ p: tProcess;
begin
neu:=lw<>letzterBefehl;
letzterBefehl:=lw;
@@ -142,10 +144,22 @@ begin
for bw:=low(tBefehlsWort) to high(tBefehlsWort) do
if zeichenTabelle[bw]=lw then begin
- if neu or not befehlsTabelle[bw].einzelKlick then
- writeln('> '+befehlsTabelle[bw].toDo);
+ if neu or not befehlsTabelle[bw].einzelKlick then begin
+ output:=befehlsTabelle[bw].toDo;
+ p:=tProcess.create(nil);
+ p.executable:=copy(output,1,pos(' ',output+' ')-1);
+ delete(output,1,length(p.executable)+1);
+ while (output)<>'' do begin
+ p.parameters.add(copy(output,1,pos(' ',output+' ')-1));
+ delete(output,1,length(p.parameters[p.parameters.count-1])+1);
+ end;
+ p.options:=p.options + [poWaitOnExit];
+ p.execute;
+ p.free;
+ end;
exit;
end;
+
writeln('roh: '+hexDump(@lw,sizeof(lw)));
end;