Add clap arguments

This commit is contained in:
Austen Adler 2022-07-05 22:24:56 -04:00
parent e3641381a1
commit 04e549e0a3
7 changed files with 212 additions and 78 deletions

82
Cargo.lock generated
View File

@ -194,6 +194,45 @@ dependencies = [
"generic-array", "generic-array",
] ]
[[package]]
name = "clap"
version = "3.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83"
dependencies = [
"atty",
"bitflags",
"clap_derive",
"clap_lex",
"indexmap",
"once_cell",
"strsim",
"termcolor",
"textwrap",
]
[[package]]
name = "clap_derive"
version = "3.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "759bf187376e1afa7b85b959e6a664a3e7a95203415dba952ad19139e798f902"
dependencies = [
"heck",
"proc-macro-error",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "clap_lex"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
]
[[package]] [[package]]
name = "cookie" name = "cookie"
version = "0.16.0" version = "0.16.0"
@ -632,6 +671,7 @@ dependencies = [
name = "ir-remote" name = "ir-remote"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"clap",
"env_logger", "env_logger",
"futures", "futures",
"log", "log",
@ -862,6 +902,12 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "os_str_bytes"
version = "6.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa"
[[package]] [[package]]
name = "parking_lot" name = "parking_lot"
version = "0.12.1" version = "0.12.1"
@ -950,6 +996,30 @@ version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.40" version = "1.0.40"
@ -1317,6 +1387,12 @@ dependencies = [
"loom", "loom",
] ]
[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]] [[package]]
name = "strum" name = "strum"
version = "0.24.1" version = "0.24.1"
@ -1379,6 +1455,12 @@ dependencies = [
"winapi-util", "winapi-util",
] ]
[[package]]
name = "textwrap"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
[[package]] [[package]]
name = "thread_local" name = "thread_local"
version = "1.1.4" version = "1.1.4"

View File

@ -17,6 +17,7 @@ futures = "0.3"
strum_macros = "0.24" strum_macros = "0.24"
strum = { version = "0.24", features = ["derive"] } strum = { version = "0.24", features = ["derive"] }
mime = "0.3" mime = "0.3"
clap = {version = "3", features = ["derive"]}
[build-dependencies] [build-dependencies]
ructe = {version = "0.14", features = ["mime03"]} ructe = {version = "0.14", features = ["mime03"]}

View File

@ -37,10 +37,10 @@ impl DeviceType {
Function::ChannelDown => 0x10, Function::ChannelDown => 0x10,
Function::Button0 => 0x11, Function::Button0 => 0x11,
Function::ChannelUp => 0x12, Function::ChannelUp => 0x12,
Function::Last => 0x13, Function::PreviousChannel => 0x13,
Function::Menu => 0x1a, Function::Menu => 0x1a,
Function::Info => 0x1f, Function::Info => 0x1f,
Function::AddSubtract => 0x25, // Function::AddSubtract => 0x25,
Function::Exit => 0x2d, Function::Exit => 0x2d,
Function::EManual => 0x3f, Function::EManual => 0x3f,
Function::Tools => 0x4b, Function::Tools => 0x4b,
@ -54,6 +54,20 @@ impl DeviceType {
Function::ChannelList => 0x6b, Function::ChannelList => 0x6b,
Function::SmartHub => 0x79, Function::SmartHub => 0x79,
Function::Button3D => 0x9f, Function::Button3D => 0x9f,
Function::Dash => 0x23,
Function::ButtonA => 0x6c,
Function::ButtonB => 0x14,
Function::ButtonC => 0x15,
Function::ButtonD => 0x16,
Function::PictureSize => 0x3e,
Function::CloseCaptioning => 0x25,
Function::Stop => 0x46,
Function::Rewind => 0x45,
Function::Play => 0x47,
Function::Pause => 0x4a,
Function::FastForward => 0x48,
Function::Search => 0x73,
}, },
} }
} }
@ -78,10 +92,10 @@ pub enum Function {
ChannelDown, ChannelDown,
Button0, Button0,
ChannelUp, ChannelUp,
Last, PreviousChannel,
Menu, Menu,
Info, Info,
AddSubtract, // AddSubtract,
Exit, Exit,
EManual, EManual,
Tools, Tools,
@ -95,6 +109,20 @@ pub enum Function {
ChannelList, ChannelList,
SmartHub, SmartHub,
Button3D, Button3D,
Dash,
ButtonA,
ButtonB,
ButtonC,
ButtonD,
PictureSize,
CloseCaptioning,
Stop,
Rewind,
Play,
Pause,
FastForward,
Search,
} }
impl Function { impl Function {
@ -117,10 +145,10 @@ impl Function {
Self::ChannelDown => "Channel Down", Self::ChannelDown => "Channel Down",
Self::Button0 => "Button 0", Self::Button0 => "Button 0",
Self::ChannelUp => "Channel Up", Self::ChannelUp => "Channel Up",
Self::Last => "Last", Self::PreviousChannel => "Previous Channel",
Self::Menu => "Menu", Self::Menu => "Menu",
Self::Info => "Info", Self::Info => "Info",
Self::AddSubtract => "Add Subtract", // Self::AddSubtract => "Add Subtract",
Self::Exit => "Exit", Self::Exit => "Exit",
Self::EManual => "E-Manual", Self::EManual => "E-Manual",
Self::Tools => "Tools", Self::Tools => "Tools",
@ -134,6 +162,19 @@ impl Function {
Self::ChannelList => "Channel List", Self::ChannelList => "Channel List",
Self::SmartHub => "Smart Hub", Self::SmartHub => "Smart Hub",
Self::Button3D => "Button 3D", Self::Button3D => "Button 3D",
Self::Dash => "-",
Self::ButtonA => "A",
Self::ButtonB => "B",
Self::ButtonC => "C",
Self::ButtonD => "D",
Self::PictureSize => "Picture Size",
Self::CloseCaptioning => "Close Captioning",
Self::Stop => "Stop",
Self::Rewind => "Rewind",
Self::Play => "Play",
Self::Pause => "Pause",
Self::FastForward => "Fast Forward",
Self::Search => "Search",
} }
} }
} }

View File

@ -2,11 +2,12 @@
mod ir_types; mod ir_types;
mod serial_agent; mod serial_agent;
mod webui; mod webui;
use clap::Parser;
use env_logger::Env; use env_logger::Env;
use futures::future::join_all; use futures::future::join_all;
use ir_types::DeviceType; use ir_types::DeviceType;
use ir_types::Function; use ir_types::Function;
use log::{error, info}; use log::{error, info, warn};
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration; use std::time::Duration;
use tokio::sync::mpsc::channel; use tokio::sync::mpsc::channel;
@ -16,30 +17,40 @@ use tokio::time;
type AppResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>; type AppResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>;
// struct Options { #[derive(Parser, Debug)]
// // device: DeviceType, struct Options {
// } // device: DeviceType,
#[clap(short, long, help = "Disables serial communication")]
no_serial: bool,
}
#[tokio::main] #[tokio::main]
async fn main() -> AppResult<()> { async fn main() -> AppResult<()> {
env_logger::Builder::from_env(Env::default().default_filter_or("info")).init(); env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
info!("Starting ir remote");
// let options = Arc::new(Options { let options = Arc::new(Options::parse());
// // device: DeviceType::Samsung,
// }); info!("Starting ir remote");
let (outbound_serial_tx, outbound_serial_rx) = channel(100); let (outbound_serial_tx, outbound_serial_rx) = channel(100);
let (inbound_serial_tx, inbound_serial_rx) = channel(100); let (inbound_serial_tx, inbound_serial_rx) = channel(100);
info!("Starting serial port agent"); let agent_handle: Option<JoinHandle<AppResult<()>>> = if options.no_serial {
let agent_handle: JoinHandle<AppResult<()>> = tokio::task::spawn(async move { warn!("Not starting serial port agent (--no-serial was given)");
serial_agent::serialport_agent(inbound_serial_tx, outbound_serial_rx).await
}); None
} else {
info!("Starting serial port agent");
Some(tokio::task::spawn(async move {
serial_agent::serialport_agent(inbound_serial_tx, outbound_serial_rx).await
}))
};
// TODO: Consume inbound_serial_rx, otherwise it will fill up and eventually be dropped // TODO: Consume inbound_serial_rx, otherwise it will fill up and eventually be dropped
// let (agent_shutdown_tx, agent_handle): (Sender<()>, JoinHandle<AppResult<()>>) = { // let (agent_shutdown_tx, agent_handle): (Sender<()>, JoinHandle<AppResult<()>>) = {
// let (shutdown_tx, shutdown_rx) = channel(1); // let (shutdown_tx, shutdown_rx) = channel(1);
// ( // (
// shutdown_tx, // shutdown_tx,
@ -57,7 +68,8 @@ async fn main() -> AppResult<()> {
.await?; .await?;
tokio::select!( tokio::select!(
// r = agent_handle => { // TODO: Handle the case where agent_handle is enabled or disabled
// r = agent_handle.unwrap(), if agent_handle.is_some() => {
// error!("Agent handle ended: {r:?}"); // error!("Agent handle ended: {r:?}");
// } // }
r = webui_handle => { r = webui_handle => {

View File

@ -1,8 +1,8 @@
use super::templates::statics::StaticFile; use super::templates::statics::StaticFile;
use log::info;
use rocket::http::Header; use rocket::http::Header;
use rocket::{http::ContentType, response, response::Responder, Request, Response}; use rocket::{http::ContentType, response, response::Responder, Request, Response};
use std::io::Cursor; use std::io::Cursor;
use log::info;
pub struct TemplateResponder(pub Vec<u8>); pub struct TemplateResponder(pub Vec<u8>);

View File

@ -1,6 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg <svg
version="1.1" version="1.1"
id="svg64" id="svg64"
@ -1007,49 +1005,49 @@ kl+J8KhFCNZFmyirVvZisdfPLEpgomBYkopyNgQ+rv8A/9k=
y="989.05127" /> y="989.05127" />
</g> </g>
<g inkscape:groupmode="layer" inkscape:label="Image" id="g70"> <g inkscape:groupmode="layer" inkscape:label="Image" id="g70">
<a xlink:href="/function?function=AddSubtract"><path id="rect464" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 285.83203 L 30.033203 285.83203 L 30.033203 343.02148 L 110.61719 343.02148 L 110.61719 285.83203 z " /></a> <a xlink:href="function?function=Dash"><path id="rect464" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 285.83203 L 30.033203 285.83203 L 30.033203 343.02148 L 110.61719 343.02148 L 110.61719 285.83203 z " /></a>
<a xlink:href="/function?function=Button7"><path id="path1492" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 228.64062 L 30.033203 285.83203 L 110.61719 285.83203 L 110.61719 228.64062 L 30.033203 228.64062 z " /></a> <a xlink:href="function?function=Button7"><path id="path1492" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 228.64062 L 30.033203 285.83203 L 110.61719 285.83203 L 110.61719 228.64062 L 30.033203 228.64062 z " /></a>
<a xlink:href="/function?function=Button4"><path id="path1483" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 171.44922 L 30.033203 228.64062 L 110.61719 228.64062 L 110.61719 171.44922 L 30.033203 171.44922 z " /></a> <a xlink:href="function?function=Button4"><path id="path1483" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 171.44922 L 30.033203 228.64062 L 110.61719 228.64062 L 110.61719 171.44922 L 30.033203 171.44922 z " /></a>
<a xlink:href="/function?function=Button1"><path id="path1480" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 114.25977 L 30.033203 171.44922 L 110.61719 171.44922 L 110.61719 114.25977 L 30.033203 114.25977 z " /></a> <a xlink:href="function?function=Button1"><path id="path1480" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 114.25977 L 30.033203 171.44922 L 110.61719 171.44922 L 110.61719 114.25977 L 30.033203 114.25977 z " /></a>
<a xlink:href="/function?function=Button0"><path id="path997" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 285.83203 L 110.61719 285.83203 L 110.61719 343.02148 L 191.20117 343.02148 L 191.20117 285.83203 z " /></a> <a xlink:href="function?function=Button0"><path id="path997" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 285.83203 L 110.61719 285.83203 L 110.61719 343.02148 L 191.20117 343.02148 L 191.20117 285.83203 z " /></a>
<a xlink:href="/function?function=Button8"><path id="path1495" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 228.64062 L 110.61719 285.83203 L 191.20117 285.83203 L 191.20117 228.64062 L 110.61719 228.64062 z " /></a> <a xlink:href="function?function=Button8"><path id="path1495" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 228.64062 L 110.61719 285.83203 L 191.20117 285.83203 L 191.20117 228.64062 L 110.61719 228.64062 z " /></a>
<a xlink:href="/function?function=Button5"><path id="path1489" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 171.44922 L 110.61719 228.64062 L 191.20117 228.64062 L 191.20117 171.44922 L 110.61719 171.44922 z " /></a> <a xlink:href="function?function=Button5"><path id="path1489" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 171.44922 L 110.61719 228.64062 L 191.20117 228.64062 L 191.20117 171.44922 L 110.61719 171.44922 z " /></a>
<a xlink:href="/function?function=Button2"><path id="path1477" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 114.25977 L 110.61719 171.44922 L 191.20117 171.44922 L 191.20117 114.25977 L 110.61719 114.25977 z " /></a> <a xlink:href="function?function=Button2"><path id="path1477" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 114.25977 L 110.61719 171.44922 L 191.20117 171.44922 L 191.20117 114.25977 L 110.61719 114.25977 z " /></a>
<a xlink:href="/function?function=Last"><path id="path994" style="fill:rgba(0,0,0,0);stroke:none;" d="M 271.78516 285.83203 L 191.20117 285.83203 L 191.20117 343.02148 L 271.78516 343.02148 L 271.78516 285.83203 z " /></a> <a xlink:href="function?function=PreviousChannel"><path id="path994" style="fill:rgba(0,0,0,0);stroke:none;" d="M 271.78516 285.83203 L 191.20117 285.83203 L 191.20117 343.02148 L 271.78516 343.02148 L 271.78516 285.83203 z " /></a>
<a xlink:href="/function?function=Button9"><path id="path1498" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 228.64062 L 191.20117 285.83203 L 271.78516 285.83203 L 271.78516 228.64062 L 191.20117 228.64062 z " /></a> <a xlink:href="function?function=Button9"><path id="path1498" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 228.64062 L 191.20117 285.83203 L 271.78516 285.83203 L 271.78516 228.64062 L 191.20117 228.64062 z " /></a>
<a xlink:href="/function?function=Button6"><path id="path1486" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 171.44922 L 191.20117 228.64062 L 271.78516 228.64062 L 271.78516 171.44922 L 191.20117 171.44922 z " /></a> <a xlink:href="function?function=Button6"><path id="path1486" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 171.44922 L 191.20117 228.64062 L 271.78516 228.64062 L 271.78516 171.44922 L 191.20117 171.44922 z " /></a>
<a xlink:href="/function?function=Button3"><path id="path1474" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 114.25977 L 191.20117 171.44922 L 271.78516 171.44922 L 271.78516 114.25977 L 191.20117 114.25977 z " /></a> <a xlink:href="function?function=Button3"><path id="path1474" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 114.25977 L 191.20117 171.44922 L 271.78516 171.44922 L 271.78516 114.25977 L 191.20117 114.25977 z " /></a>
<a xlink:href="/function?function=InputSource"><path id="path1501" style="fill:rgba(0,0,0,0);stroke:none;" d="m 189.20117,43.019996 v 65.239774 h 80.58399 V 43.019996 Z" /></a> <a xlink:href="function?function=InputSource"><path id="path1501" style="fill:rgba(0,0,0,0);stroke:none;" d="m 189.20117,43.019996 v 65.239774 h 80.58399 V 43.019996 Z" /></a>
<a xlink:href="/function?function=Power"><path id="path1503" style="fill:rgba(0,0,0,0);stroke:none;" d="m 34.0332,36.135788 v 76.123982 h 80.58399 V 36.135788 Z" /></a> <a xlink:href="function?function=Power"><path id="path1503" style="fill:rgba(0,0,0,0);stroke:none;" d="m 34.0332,36.135788 v 76.123982 h 80.58399 V 36.135788 Z" /></a>
<a xlink:href="/function?function=Mute"><path id="path1505" style="fill:rgba(0,0,0,0);stroke:none;" d="m 188.06799,345.97684 h -71.90271 v 80.58111 h 71.90271 z" /></a> <a xlink:href="function?function=Mute"><path id="path1505" style="fill:rgba(0,0,0,0);stroke:none;" d="m 188.06799,345.97684 h -71.90271 v 80.58111 h 71.90271 z" /></a>
<a xlink:href="/function?function=ChannelList"><path id="path1507" style="fill:rgba(0,0,0,0);stroke:none;" d="m 187.07236,430.38414 h -65.84819 v 70.95271 h 65.84819 z" /></a> <a xlink:href="function?function=ChannelList"><path id="path1507" style="fill:rgba(0,0,0,0);stroke:none;" d="m 187.07236,430.38414 h -65.84819 v 70.95271 h 65.84819 z" /></a>
<a xlink:href="/function?function=ChannelDown"><path id="path1509" style="fill:rgba(0,0,0,0);stroke:none;" d="M 273.67188 436.94336 L 189.32422 436.94336 L 189.32422 517.69336 L 273.67188 517.69336 L 273.67188 436.94336 z " /></a> <a xlink:href="function?function=ChannelDown"><path id="path1509" style="fill:rgba(0,0,0,0);stroke:none;" d="M 273.67188 436.94336 L 189.32422 436.94336 L 189.32422 517.69336 L 273.67188 517.69336 L 273.67188 436.94336 z " /></a>
<a xlink:href="/function?function=ChannelUp"><path id="path3698" style="fill:rgba(0,0,0,0);stroke:none;" d="M 189.32422 347.51172 L 189.32422 436.94336 L 273.67188 436.94336 L 273.67188 347.51172 L 189.32422 347.51172 z " /></a> <a xlink:href="function?function=ChannelUp"><path id="path3698" style="fill:rgba(0,0,0,0);stroke:none;" d="M 189.32422 347.51172 L 189.32422 436.94336 L 273.67188 436.94336 L 273.67188 347.51172 L 189.32422 347.51172 z " /></a>
<a xlink:href="/function?function=VolumeDown"><path id="path1511" style="fill:rgba(0,0,0,0);stroke:none;" d="M 115.93164 436.94336 L 28.308594 436.94336 L 28.308594 518.10352 L 115.93164 518.10352 L 115.93164 436.94336 z " /></a> <a xlink:href="function?function=VolumeDown"><path id="path1511" style="fill:rgba(0,0,0,0);stroke:none;" d="M 115.93164 436.94336 L 28.308594 436.94336 L 28.308594 518.10352 L 115.93164 518.10352 L 115.93164 436.94336 z " /></a>
<a xlink:href="/function?function=VolumeUp"><path id="path3695" style="fill:rgba(0,0,0,0);stroke:none;" d="M 28.308594 347.92383 L 28.308594 436.94336 L 115.93164 436.94336 L 115.93164 347.92383 L 28.308594 347.92383 z " /></a> <a xlink:href="function?function=VolumeUp"><path id="path3695" style="fill:rgba(0,0,0,0);stroke:none;" d="M 28.308594 347.92383 L 28.308594 436.94336 L 115.93164 436.94336 L 115.93164 347.92383 L 28.308594 347.92383 z " /></a>
<a xlink:href="/function?function=SmartHub"><path id="path1513" style="fill:rgba(0,0,0,0);stroke:none;" d="m 183.07236,513.22443 h -65.84819 v 70.95271 h 65.84819 z" /></a> <a xlink:href="function?function=SmartHub"><path id="path1513" style="fill:rgba(0,0,0,0);stroke:none;" d="m 183.07236,513.22443 h -65.84819 v 70.95271 h 65.84819 z" /></a>
<a xlink:href="/function?function=Guide"><path id="path1515" style="fill:rgba(0,0,0,0);stroke:none;" d="m 267.44021,523.24455 h -79.35424 v 64.46748 h 79.35424 z" /></a> <a xlink:href="function?function=Guide"><path id="path1515" style="fill:rgba(0,0,0,0);stroke:none;" d="m 267.44021,523.24455 h -79.35424 v 64.46748 h 79.35424 z" /></a>
<a xlink:href="/function?function=Menu"><path id="path1517" style="fill:rgba(0,0,0,0);stroke:none;" d="M 113.82824,523.24455 H 34.474003 v 64.46748 h 79.354237 z" /></a> <a xlink:href="function?function=Menu"><path id="path1517" style="fill:rgba(0,0,0,0);stroke:none;" d="M 113.82824,523.24455 H 34.474003 v 64.46748 h 79.354237 z" /></a>
<a xlink:href="/function?function=Tools"><path id="path1519" style="fill:rgba(0,0,0,0);stroke:none;" d="M 113.82824,587.71203 H 34.474003 v 64.46748 h 79.354237 z" /></a> <a xlink:href="function?function=Tools"><path id="path1519" style="fill:rgba(0,0,0,0);stroke:none;" d="M 113.82824,587.71203 H 34.474003 v 64.46748 h 79.354237 z" /></a>
<a xlink:href="/function?function=Info"><path id="path1521" style="fill:rgba(0,0,0,0);stroke:none;" d="m 267.44021,587.71203 h -79.35424 v 64.46748 h 79.35424 z" /></a> <a xlink:href="function?function=Info"><path id="path1521" style="fill:rgba(0,0,0,0);stroke:none;" d="m 267.44021,587.71203 h -79.35424 v 64.46748 h 79.35424 z" /></a>
<a xlink:href="/function?function=CursorUp"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1545" width="74.184525" height="71.952538" x="113.86485" y="587.74866" /></a> <a xlink:href="function?function=CursorUp"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1545" width="74.184525" height="71.952538" x="113.86485" y="587.74866" /></a>
<a xlink:href="/function?function=CursorDown"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1627" width="74.184525" height="71.952538" x="113.17372" y="725.35107" /></a> <a xlink:href="function?function=CursorDown"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1627" width="74.184525" height="71.952538" x="113.17372" y="725.35107" /></a>
<a xlink:href="/function?function=CursorRight"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1629" width="81.755196" height="71.884422" x="188.08344" y="659.73523" /></a> <a xlink:href="function?function=CursorRight"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1629" width="81.755196" height="71.884422" x="188.08344" y="659.73523" /></a>
<a xlink:href="/function?function=CursorLeft"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1631" width="85.428856" height="71.852524" x="28.386009" y="659.75116" /></a> <a xlink:href="function?function=CursorLeft"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect1631" width="85.428856" height="71.852524" x="28.386009" y="659.75116" /></a>
<a xlink:href="/function?function=Exit"><path id="path1633" style="fill:rgba(0,0,0,0);stroke:none;" d="m 269.83862,731.61963 h -79.35424 v 64.46748 h 79.35424 z" /></a> <a xlink:href="function?function=Exit"><path id="path1633" style="fill:rgba(0,0,0,0);stroke:none;" d="m 269.83862,731.61963 h -79.35424 v 64.46748 h 79.35424 z" /></a>
<a xlink:href="/function?function=Return"><path id="path1635" style="fill:rgba(0,0,0,0);stroke:none;" d="M 113.81487,731.6037 H 34.460625 v 64.46748 h 79.354245 z" /></a> <a xlink:href="function?function=Return"><path id="path1635" style="fill:rgba(0,0,0,0);stroke:none;" d="M 113.81487,731.6037 H 34.460625 v 64.46748 h 79.354245 z" /></a>
<a xlink:href="/function?function=Rewind"><path id="rect1659" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 33.228516 898.05859 L 33.228516 949.05273 L 92.380859 949.05273 L 92.380859 898.05859 z " /></a> <a xlink:href="function?function=Rewind"><path id="rect1659" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 33.228516 898.05859 L 33.228516 949.05273 L 92.380859 949.05273 L 92.380859 898.05859 z " /></a>
<a xlink:href="/function?function=Play"><path id="path2351" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 92.380859 949.05273 L 151.5332 949.05273 L 151.5332 898.05859 L 92.380859 898.05859 z " /></a> <a xlink:href="function?function=Play"><path id="path2351" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 92.380859 949.05273 L 151.5332 949.05273 L 151.5332 898.05859 L 92.380859 898.05859 z " /></a>
<a xlink:href="/function?function=Pause"><path id="path2348" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 898.05859 L 151.5332 949.05273 L 210.68555 949.05273 L 210.68555 898.05859 L 151.5332 898.05859 z " /></a> <a xlink:href="function?function=Pause"><path id="path2348" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 898.05859 L 151.5332 949.05273 L 210.68555 949.05273 L 210.68555 898.05859 L 151.5332 898.05859 z " /></a>
<a xlink:href="/function?function=Fastforward"><path id="path2345" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 898.05859 L 210.68555 949.05273 L 269.83789 949.05273 L 269.83789 898.05859 L 210.68555 898.05859 z " /></a> <a xlink:href="function?function=FastForward"><path id="path2345" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 898.05859 L 210.68555 949.05273 L 269.83789 949.05273 L 269.83789 898.05859 L 210.68555 898.05859 z " /></a>
<a xlink:href="/function?function=EManual"><path id="path2324" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 847.06445 L 33.228516 847.06445 L 33.228516 898.05859 L 92.380859 898.05859 L 92.380859 847.06445 z " /></a> <a xlink:href="function?function=EManual"><path id="path2324" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 847.06445 L 33.228516 847.06445 L 33.228516 898.05859 L 92.380859 898.05859 L 92.380859 847.06445 z " /></a>
<a xlink:href="/function?function=Sports"><path id="path2336" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 847.06445 L 92.380859 847.06445 L 92.380859 898.05859 L 151.5332 898.05859 L 151.5332 847.06445 z " /></a> <a xlink:href="function?function=PictureSize"><path id="path2336" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 847.06445 L 92.380859 847.06445 L 92.380859 898.05859 L 151.5332 898.05859 L 151.5332 847.06445 z " /></a>
<a xlink:href="/function?function=CC"><path id="path2339" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 151.5332 847.06445 L 151.5332 898.05859 L 210.68555 898.05859 L 210.68555 847.06445 z " /></a> <a xlink:href="function?function=CloseCaptioning"><path id="path2339" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 151.5332 847.06445 L 151.5332 898.05859 L 210.68555 898.05859 L 210.68555 847.06445 z " /></a>
<a xlink:href="/function?function=Stop"><path id="path2342" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 210.68555 898.05859 L 269.83789 898.05859 L 269.83789 847.06445 L 210.68555 847.06445 z " /></a> <a xlink:href="function?function=Stop"><path id="path2342" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 210.68555 898.05859 L 269.83789 898.05859 L 269.83789 847.06445 L 210.68555 847.06445 z " /></a>
<a xlink:href="/function?function=A"><path id="path2321" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 796.08789 L 33.228516 796.08789 L 33.228516 847.06445 L 92.380859 847.06445 L 92.380859 796.08789 z " /></a> <a xlink:href="function?function=ButtonA"><path id="path2321" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 796.08789 L 33.228516 796.08789 L 33.228516 847.06445 L 92.380859 847.06445 L 92.380859 796.08789 z " /></a>
<a xlink:href="/function?function=B"><path id="path2327" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 796.08789 L 92.380859 796.08789 L 92.380859 847.06445 L 151.5332 847.06445 L 151.5332 796.08789 z " /></a> <a xlink:href="function?function=ButtonB"><path id="path2327" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 796.08789 L 92.380859 796.08789 L 92.380859 847.06445 L 151.5332 847.06445 L 151.5332 796.08789 z " /></a>
<a xlink:href="/function?function=C"><path id="path2330" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 151.5332 796.08789 L 151.5332 847.06445 L 210.68555 847.06445 L 210.68555 796.08789 z " /></a> <a xlink:href="function?function=ButtonC"><path id="path2330" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 151.5332 796.08789 L 151.5332 847.06445 L 210.68555 847.06445 L 210.68555 796.08789 z " /></a>
<a xlink:href="/function?function=D"><path id="path2333" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 210.68555 847.06445 L 269.83789 847.06445 L 269.83789 796.08789 L 210.68555 796.08789 z " /></a> <a xlink:href="function?function=ButtonD"><path id="path2333" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 210.68555 847.06445 L 269.83789 847.06445 L 269.83789 796.08789 L 210.68555 796.08789 z " /></a>
<a xlink:href="/function?function=Enter"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect3842" width="73.543381" height="65.599915" x="113.81487" y="659.75116" /></a> <a xlink:href="function?function=Enter"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect3842" width="73.543381" height="65.599915" x="113.81487" y="659.75116" /></a>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -6,7 +6,7 @@
<html> <html>
<head> <head>
<title>Unknown Title</title> <title>IR Remote</title>
<!-- <link rel="stylesheet" href="/static/@tacit_css_min_css.name"/> --> <!-- <link rel="stylesheet" href="/static/@tacit_css_min_css.name"/> -->
<meta charset="utf-8"> <meta charset="utf-8">
@ -16,9 +16,9 @@
<body> <body>
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- <object data="/static/@remote2_svg.name" type="image/svg+xml"></object> -->
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg <svg
version="1.1" version="1.1"
id="svg64" id="svg64"
@ -1025,7 +1025,7 @@ kl+J8KhFCNZFmyirVvZisdfPLEpgomBYkopyNgQ+rv8A/9k=
y="989.05127" /> y="989.05127" />
</g> </g>
<g inkscape:groupmode="layer" inkscape:label="Image" id="g70"> <g inkscape:groupmode="layer" inkscape:label="Image" id="g70">
<a xlink:href="function?function=AddSubtract"><path id="rect464" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 285.83203 L 30.033203 285.83203 L 30.033203 343.02148 L 110.61719 343.02148 L 110.61719 285.83203 z " /></a> <a xlink:href="function?function=Dash"><path id="rect464" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 285.83203 L 30.033203 285.83203 L 30.033203 343.02148 L 110.61719 343.02148 L 110.61719 285.83203 z " /></a>
<a xlink:href="function?function=Button7"><path id="path1492" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 228.64062 L 30.033203 285.83203 L 110.61719 285.83203 L 110.61719 228.64062 L 30.033203 228.64062 z " /></a> <a xlink:href="function?function=Button7"><path id="path1492" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 228.64062 L 30.033203 285.83203 L 110.61719 285.83203 L 110.61719 228.64062 L 30.033203 228.64062 z " /></a>
<a xlink:href="function?function=Button4"><path id="path1483" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 171.44922 L 30.033203 228.64062 L 110.61719 228.64062 L 110.61719 171.44922 L 30.033203 171.44922 z " /></a> <a xlink:href="function?function=Button4"><path id="path1483" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 171.44922 L 30.033203 228.64062 L 110.61719 228.64062 L 110.61719 171.44922 L 30.033203 171.44922 z " /></a>
<a xlink:href="function?function=Button1"><path id="path1480" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 114.25977 L 30.033203 171.44922 L 110.61719 171.44922 L 110.61719 114.25977 L 30.033203 114.25977 z " /></a> <a xlink:href="function?function=Button1"><path id="path1480" style="fill:rgba(0,0,0,0);stroke:none;" d="M 30.033203 114.25977 L 30.033203 171.44922 L 110.61719 171.44922 L 110.61719 114.25977 L 30.033203 114.25977 z " /></a>
@ -1033,7 +1033,7 @@ kl+J8KhFCNZFmyirVvZisdfPLEpgomBYkopyNgQ+rv8A/9k=
<a xlink:href="function?function=Button8"><path id="path1495" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 228.64062 L 110.61719 285.83203 L 191.20117 285.83203 L 191.20117 228.64062 L 110.61719 228.64062 z " /></a> <a xlink:href="function?function=Button8"><path id="path1495" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 228.64062 L 110.61719 285.83203 L 191.20117 285.83203 L 191.20117 228.64062 L 110.61719 228.64062 z " /></a>
<a xlink:href="function?function=Button5"><path id="path1489" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 171.44922 L 110.61719 228.64062 L 191.20117 228.64062 L 191.20117 171.44922 L 110.61719 171.44922 z " /></a> <a xlink:href="function?function=Button5"><path id="path1489" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 171.44922 L 110.61719 228.64062 L 191.20117 228.64062 L 191.20117 171.44922 L 110.61719 171.44922 z " /></a>
<a xlink:href="function?function=Button2"><path id="path1477" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 114.25977 L 110.61719 171.44922 L 191.20117 171.44922 L 191.20117 114.25977 L 110.61719 114.25977 z " /></a> <a xlink:href="function?function=Button2"><path id="path1477" style="fill:rgba(0,0,0,0);stroke:none;" d="M 110.61719 114.25977 L 110.61719 171.44922 L 191.20117 171.44922 L 191.20117 114.25977 L 110.61719 114.25977 z " /></a>
<a xlink:href="function?function=Last"><path id="path994" style="fill:rgba(0,0,0,0);stroke:none;" d="M 271.78516 285.83203 L 191.20117 285.83203 L 191.20117 343.02148 L 271.78516 343.02148 L 271.78516 285.83203 z " /></a> <a xlink:href="function?function=PreviousChannel"><path id="path994" style="fill:rgba(0,0,0,0);stroke:none;" d="M 271.78516 285.83203 L 191.20117 285.83203 L 191.20117 343.02148 L 271.78516 343.02148 L 271.78516 285.83203 z " /></a>
<a xlink:href="function?function=Button9"><path id="path1498" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 228.64062 L 191.20117 285.83203 L 271.78516 285.83203 L 271.78516 228.64062 L 191.20117 228.64062 z " /></a> <a xlink:href="function?function=Button9"><path id="path1498" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 228.64062 L 191.20117 285.83203 L 271.78516 285.83203 L 271.78516 228.64062 L 191.20117 228.64062 z " /></a>
<a xlink:href="function?function=Button6"><path id="path1486" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 171.44922 L 191.20117 228.64062 L 271.78516 228.64062 L 271.78516 171.44922 L 191.20117 171.44922 z " /></a> <a xlink:href="function?function=Button6"><path id="path1486" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 171.44922 L 191.20117 228.64062 L 271.78516 228.64062 L 271.78516 171.44922 L 191.20117 171.44922 z " /></a>
<a xlink:href="function?function=Button3"><path id="path1474" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 114.25977 L 191.20117 171.44922 L 271.78516 171.44922 L 271.78516 114.25977 L 191.20117 114.25977 z " /></a> <a xlink:href="function?function=Button3"><path id="path1474" style="fill:rgba(0,0,0,0);stroke:none;" d="M 191.20117 114.25977 L 191.20117 171.44922 L 271.78516 171.44922 L 271.78516 114.25977 L 191.20117 114.25977 z " /></a>
@ -1059,15 +1059,15 @@ kl+J8KhFCNZFmyirVvZisdfPLEpgomBYkopyNgQ+rv8A/9k=
<a xlink:href="function?function=Rewind"><path id="rect1659" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 33.228516 898.05859 L 33.228516 949.05273 L 92.380859 949.05273 L 92.380859 898.05859 z " /></a> <a xlink:href="function?function=Rewind"><path id="rect1659" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 33.228516 898.05859 L 33.228516 949.05273 L 92.380859 949.05273 L 92.380859 898.05859 z " /></a>
<a xlink:href="function?function=Play"><path id="path2351" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 92.380859 949.05273 L 151.5332 949.05273 L 151.5332 898.05859 L 92.380859 898.05859 z " /></a> <a xlink:href="function?function=Play"><path id="path2351" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 898.05859 L 92.380859 949.05273 L 151.5332 949.05273 L 151.5332 898.05859 L 92.380859 898.05859 z " /></a>
<a xlink:href="function?function=Pause"><path id="path2348" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 898.05859 L 151.5332 949.05273 L 210.68555 949.05273 L 210.68555 898.05859 L 151.5332 898.05859 z " /></a> <a xlink:href="function?function=Pause"><path id="path2348" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 898.05859 L 151.5332 949.05273 L 210.68555 949.05273 L 210.68555 898.05859 L 151.5332 898.05859 z " /></a>
<a xlink:href="function?function=Fastforward"><path id="path2345" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 898.05859 L 210.68555 949.05273 L 269.83789 949.05273 L 269.83789 898.05859 L 210.68555 898.05859 z " /></a> <a xlink:href="function?function=FastForward"><path id="path2345" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 898.05859 L 210.68555 949.05273 L 269.83789 949.05273 L 269.83789 898.05859 L 210.68555 898.05859 z " /></a>
<a xlink:href="function?function=EManual"><path id="path2324" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 847.06445 L 33.228516 847.06445 L 33.228516 898.05859 L 92.380859 898.05859 L 92.380859 847.06445 z " /></a> <a xlink:href="function?function=EManual"><path id="path2324" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 847.06445 L 33.228516 847.06445 L 33.228516 898.05859 L 92.380859 898.05859 L 92.380859 847.06445 z " /></a>
<a xlink:href="function?function=Sports"><path id="path2336" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 847.06445 L 92.380859 847.06445 L 92.380859 898.05859 L 151.5332 898.05859 L 151.5332 847.06445 z " /></a> <a xlink:href="function?function=PictureSize"><path id="path2336" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 847.06445 L 92.380859 847.06445 L 92.380859 898.05859 L 151.5332 898.05859 L 151.5332 847.06445 z " /></a>
<a xlink:href="function?function=CC"><path id="path2339" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 151.5332 847.06445 L 151.5332 898.05859 L 210.68555 898.05859 L 210.68555 847.06445 z " /></a> <a xlink:href="function?function=CloseCaptioning"><path id="path2339" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 151.5332 847.06445 L 151.5332 898.05859 L 210.68555 898.05859 L 210.68555 847.06445 z " /></a>
<a xlink:href="function?function=Stop"><path id="path2342" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 210.68555 898.05859 L 269.83789 898.05859 L 269.83789 847.06445 L 210.68555 847.06445 z " /></a> <a xlink:href="function?function=Stop"><path id="path2342" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 847.06445 L 210.68555 898.05859 L 269.83789 898.05859 L 269.83789 847.06445 L 210.68555 847.06445 z " /></a>
<a xlink:href="function?function=A"><path id="path2321" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 796.08789 L 33.228516 796.08789 L 33.228516 847.06445 L 92.380859 847.06445 L 92.380859 796.08789 z " /></a> <a xlink:href="function?function=ButtonA"><path id="path2321" style="fill:rgba(0,0,0,0);stroke:none;" d="M 92.380859 796.08789 L 33.228516 796.08789 L 33.228516 847.06445 L 92.380859 847.06445 L 92.380859 796.08789 z " /></a>
<a xlink:href="function?function=B"><path id="path2327" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 796.08789 L 92.380859 796.08789 L 92.380859 847.06445 L 151.5332 847.06445 L 151.5332 796.08789 z " /></a> <a xlink:href="function?function=ButtonB"><path id="path2327" style="fill:rgba(0,0,0,0);stroke:none;" d="M 151.5332 796.08789 L 92.380859 796.08789 L 92.380859 847.06445 L 151.5332 847.06445 L 151.5332 796.08789 z " /></a>
<a xlink:href="function?function=C"><path id="path2330" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 151.5332 796.08789 L 151.5332 847.06445 L 210.68555 847.06445 L 210.68555 796.08789 z " /></a> <a xlink:href="function?function=ButtonC"><path id="path2330" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 151.5332 796.08789 L 151.5332 847.06445 L 210.68555 847.06445 L 210.68555 796.08789 z " /></a>
<a xlink:href="function?function=D"><path id="path2333" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 210.68555 847.06445 L 269.83789 847.06445 L 269.83789 796.08789 L 210.68555 796.08789 z " /></a> <a xlink:href="function?function=ButtonD"><path id="path2333" style="fill:rgba(0,0,0,0);stroke:none;" d="M 210.68555 796.08789 L 210.68555 847.06445 L 269.83789 847.06445 L 269.83789 796.08789 L 210.68555 796.08789 z " /></a>
<a xlink:href="function?function=Enter"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect3842" width="73.543381" height="65.599915" x="113.81487" y="659.75116" /></a> <a xlink:href="function?function=Enter"><rect style="fill:rgba(0,0,0,0);stroke:none;" id="rect3842" width="73.543381" height="65.599915" x="113.81487" y="659.75116" /></a>
</g> </g>
</svg> </svg>