summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--RaspberryPITVHDMI1606
-rw-r--r--RaspberryPITVHDMI_archivos/0c41b826d1c81f42e55160501605d3c96ded0ae1.pngbin0 -> 3351 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/20.pngbin0 -> 188 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/2566_2.jpgbin0 -> 1365 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/2566_2_002.jpgbin0 -> 2498 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/2566_2_003.jpgbin0 -> 988 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/32.pngbin0 -> 237 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/32_002.pngbin0 -> 707 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/45.pngbin0 -> 285 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/45_002.pngbin0 -> 280 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/45_003.pngbin0 -> 278 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/75e71344378ac84843e886b21c71301deab5d960.js9
-rw-r--r--RaspberryPITVHDMI_archivos/application-e820091e1a171524cdf20a1a5bea75eb18455293e45dc37f4.js75
-rw-r--r--RaspberryPITVHDMI_archivos/bd34dee19ab76bc4f22cba22a34edbdab790a807.js19
-rw-r--r--RaspberryPITVHDMI_archivos/browser-update-1741a2ed67a367faeb0a582af064457e8b1b1354e52e6e.js2
-rw-r--r--RaspberryPITVHDMI_archivos/css.css96
-rw-r--r--RaspberryPITVHDMI_archivos/desktop_1_581866bb4050fdf1451a3946f2c02310c650f57b.css6
-rw-r--r--RaspberryPITVHDMI_archivos/desktop_theme_7_c7a073874a27ebdc0acb6535652305a0edb8a061.css1
-rw-r--r--RaspberryPITVHDMI_archivos/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_401x500.pngbin0 -> 48698 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df.js19
-rw-r--r--RaspberryPITVHDMI_archivos/en-a2096d7903ea9680a0ddd80943fb0530045088c839730119480af4c3d8.js8
-rw-r--r--RaspberryPITVHDMI_archivos/facebook.svg56
-rw-r--r--RaspberryPITVHDMI_archivos/jquery.js4
-rw-r--r--RaspberryPITVHDMI_archivos/mastodon.svg16
-rw-r--r--RaspberryPITVHDMI_archivos/plugin-d3f2aabe1f4c66e75c9ad0d17efb33e5633e91ae4b556c155058c9.js4
-rw-r--r--RaspberryPITVHDMI_archivos/plugin-third-party-01ba4719c80b6fe911b091a7c05124b64eeece964e.js2
-rw-r--r--RaspberryPITVHDMI_archivos/preload-application-data-0a59ccab480941aaac91f9e7fa7f77496323.js2
-rw-r--r--RaspberryPITVHDMI_archivos/preload-store-081120a9f8cb0871483b66a95e534ce8e81f97d19c8cef9.js2
-rw-r--r--RaspberryPITVHDMI_archivos/pretty-text-bundle-b33ff981ecc4ae5cc254a569e9bde34f68337b177e.js5
-rw-r--r--RaspberryPITVHDMI_archivos/rss.svg65
-rw-r--r--RaspberryPITVHDMI_archivos/slightly_smiling.pngbin0 -> 920 bytes
-rw-r--r--RaspberryPITVHDMI_archivos/svg-7-a49ad7255a63371eebe293cc86311573fb927cfb.js1
-rw-r--r--RaspberryPITVHDMI_archivos/twitter.svg56
-rw-r--r--RaspberryPITVHDMI_archivos/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c.js6
-rw-r--r--RaspberryPITVHDMI_archivos/youtube.svg56
35 files changed, 2116 insertions, 0 deletions
diff --git a/RaspberryPITVHDMI b/RaspberryPITVHDMI
new file mode 100644
index 0000000..0bd659a
--- /dev/null
+++ b/RaspberryPITVHDMI
@@ -0,0 +1,1606 @@
+<!DOCTYPE html>
+<html class="desktop-view not-mobile-device text-size-normal anon no-touch discourse-no-touch" lang="en"><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+<title>Controlling Raspberry PI with TV Remote, using HDMI CEC - Tips, Tricks and Tutorials / Raspberry Pi - Ubuntu MATE Community</title>
+<meta name="description" content="Hello everyone.
+
+Description: I wrote a script that connects to HDMI CEC ( cec-client needed ) and listens for TV Remote key presses. Based on the keys pressed / released (or auto-released; holding down certain keys for&amp;hellip;">
+<meta name="discourse_theme_ids" content="7">
+<meta name="discourse_current_homepage" content="categories">
+<meta name="generator" content="Discourse 2.3.1 - https://github.com/discourse/discourse version 5b91182985d70dea991ef82eeae120cac0bef935">
+<link rel="icon" type="image/png" href="https://ubuntu-mate.community/uploads/default/optimized/1X/e75ff172b5be659c48d264a448a3707f524f48f9_2_32x32.ico">
+<link rel="apple-touch-icon" type="image/png" href="https://ubuntu-mate.community/uploads/default/optimized/2X/1/14ea399f69eb3d52e32df958dbc6b6ed0d691eea_2_180x180.png">
+<meta name="theme-color" content="#87a556">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover">
+<link rel="canonical" href="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250">
+<script type="application/ld+json">{"@context":"http://schema.org","@type":"WebSite","url":"https://ubuntu-mate.community","potentialAction":{"@type":"SearchAction","target":"https://ubuntu-mate.community/search?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
+<link rel="search" type="application/opensearchdescription+xml" href="https://ubuntu-mate.community/opensearch.xml" title="Ubuntu MATE Community Search">
+<meta name="fragment" content="!">
+<link rel="preload" href="RaspberryPITVHDMI_archivos/en-a2096d7903ea9680a0ddd80943fb0530045088c839730119480af4c3d8.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/en-a2096d7903ea9680a0ddd80943fb0530045088c839730119480af4c3d8.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/ember_jquery-0ae86c6a7527a99c2b9b8a11521273bd9cb4f7d41bc546df.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/preload-store-081120a9f8cb0871483b66a95e534ce8e81f97d19c8cef9.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/preload-store-081120a9f8cb0871483b66a95e534ce8e81f97d19c8cef9.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/vendor-25f91d66eba869fbd399d751711e74544b6d60bf034a5350b61c6c.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/pretty-text-bundle-b33ff981ecc4ae5cc254a569e9bde34f68337b177e.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/pretty-text-bundle-b33ff981ecc4ae5cc254a569e9bde34f68337b177e.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/application-e820091e1a171524cdf20a1a5bea75eb18455293e45dc37f4.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/application-e820091e1a171524cdf20a1a5bea75eb18455293e45dc37f4.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/plugin-d3f2aabe1f4c66e75c9ad0d17efb33e5633e91ae4b556c155058c9.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/plugin-d3f2aabe1f4c66e75c9ad0d17efb33e5633e91ae4b556c155058c9.js"></script>
+<link rel="preload" href="RaspberryPITVHDMI_archivos/plugin-third-party-01ba4719c80b6fe911b091a7c05124b64eeece964e.js" as="script">
+<script src="RaspberryPITVHDMI_archivos/plugin-third-party-01ba4719c80b6fe911b091a7c05124b64eeece964e.js"></script>
+<link href="RaspberryPITVHDMI_archivos/css.css" rel="stylesheet" type="text/css">
+<link rel="manifest" href="https://ubuntu-mate.community/manifest.webmanifest" crossorigin="use-credentials">
+
+<link href="RaspberryPITVHDMI_archivos/desktop_1_581866bb4050fdf1451a3946f2c02310c650f57b.css" media="all" rel="stylesheet" data-target="desktop" data-theme-id="7">
+<link href="RaspberryPITVHDMI_archivos/desktop_theme_7_c7a073874a27ebdc0acb6535652305a0edb8a061.css" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="7">
+<link rel="alternate" type="application/rss+xml" title="RSS feed of 'Controlling Raspberry PI with TV Remote, using HDMI CEC'" href="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250.rss">
+<meta property="og:site_name" content="Ubuntu MATE Community">
+<meta name="twitter:card" content="summary">
+<meta name="twitter:image" content="https://ubuntu-mate.community/uploads/default/optimized/2X/e/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_401x500.png">
+<meta property="og:image" content="https://ubuntu-mate.community/uploads/default/optimized/2X/e/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_401x500.png">
+<meta property="og:url" content="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250">
+<meta name="twitter:url" content="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250">
+<meta property="og:title" content="Controlling Raspberry PI with TV Remote, using HDMI CEC">
+<meta name="twitter:title" content="Controlling Raspberry PI with TV Remote, using HDMI CEC">
+<meta property="og:description" content="Hello everyone. Description: I wrote a script that connects to HDMI CEC ( cec-client needed ) and listens for TV Remote key presses. Based on the keys pressed / released (or auto-released; holding down certain keys for too long makes them auto-release) different actions are executed. Some examples: write letters and numbers using 0-9 keys (simulating 3x4 keypad phones - key &quot;2&quot; switches between a-b-c-2, key 9 switches between w-x-y-z-9) ( xdotool needed ) move mouse cursor using up/down/left...">
+<meta name="twitter:description" content="Hello everyone. Description: I wrote a script that connects to HDMI CEC ( cec-client needed ) and listens for TV Remote key presses. Based on the keys pressed / released (or auto-released; holding down certain keys for too long makes them auto-release) different actions are executed. Some examples: write letters and numbers using 0-9 keys (simulating 3x4 keypad phones - key &quot;2&quot; switches between a-b-c-2, key 9 switches between w-x-y-z-9) ( xdotool needed ) move mouse cursor using up/down/left...">
+<meta name="twitter:label1" value="Reading time">
+<meta name="twitter:data1" value="6 mins 🕑">
+<meta name="twitter:label2" value="Likes">
+<meta name="twitter:data2" value="3 ❤">
+<meta property="article:published_time" content="2016-08-11T01:40:52+00:00">
+<meta property="og:ignore_canonical" content="true">
+<script type="application/ld+json">{"@context":"http://schema.org","@type":"QAPage","name":"Controlling Raspberry PI with TV Remote, using HDMI CEC","mainEntity":{"@type":"Question","name":"Controlling Raspberry PI with TV Remote, using HDMI CEC","text":"Hello everyone. \nDescription: \nI wrote a script that connects to HDMI CEC ( cec-client needed ) and listens for TV Remote key presses. Based on the keys pressed / released (or auto-released; holding down certain keys for too long makes them auto-release) different actions are executed. Some examples&hellip;","upvoteCount":3,"answerCount":0,"dateCreated":"2016-03-10T10:14:41.253Z","author":{"@type":"Person","name":"Simon Murgelj"}}}</script>
+<meta id="data-discourse-setup" data-base-url="https://ubuntu-mate.community" data-base-uri="" data-environment="production" data-letter-avatar-version="5_7a34611334577356ea98a4f98ad61bf8" data-markdown-it-url="/assets/markdown-it-bundle-f79d9db8b5c7812b862fd0c3379d87d67d6b4ce5cda50a66cb1a50482793ce50.js" data-service-worker-url="service-worker-83e47e9f07bb77a5c8146b30ee8c7761c0ce036d70528cd57da81981879b70f7.js" data-default-locale="en" data-asset-version="19904fa7ecf0ca6bfb3659c05e68538b" data-disable-custom-css="false" data-highlight-js-path="/highlight-js/ubuntu-mate.community/bd34dee19ab76bc4f22cba22a34edbdab790a807.js" data-svg-sprite-path="/svg-sprite/ubuntu-mate.community/svg-7-a49ad7255a63371eebe293cc86311573fb927cfb.js">
+<script src="RaspberryPITVHDMI_archivos/svg-7-a49ad7255a63371eebe293cc86311573fb927cfb.js"></script><style id="image-sizing-hack">#reply-control .d-editor-preview img:not(.thumbnail), .cooked img:not(.thumbnail) {max-width:690px;max-height:500px;}</style><script src="RaspberryPITVHDMI_archivos/jquery.js"></script><script src="RaspberryPITVHDMI_archivos/bd34dee19ab76bc4f22cba22a34edbdab790a807.js"></script></head>
+<body class="archetype-regular category-tips-tricks-and-tutorials-raspberry-pi-tips docked">
+
+<div id="top-navbar">
+<div id="top-navbar-links" class="wrap">
+<a href="https://ubuntu-mate.org/" title="Ubuntu MATE Website">Website</a>
+<a href="https://ubuntu-mate.org/download" title="Download Ubuntu MATE">Download</a>
+<a href="https://bugs.launchpad.net/ubuntu-mate" title="Report bugs via Launchpad">Bug Tracker</a>
+<a href="https://ubuntu-mate.org/irc/" title="Chat with other Ubuntu MATE users">IRC</a>
+<a href="https://ubuntu-mate.boutique/" title="Buy mechandise and other branded items">Shop</a>
+<a href="https://ubuntu-mate.community/wiki" title="View the index of wiki topics and guides">Wiki</a>
+<a href="https://ubuntu-mate.org/donate/" title="Contribute back and support the project financially">Donate</a>
+</div>
+</div>
+<section id="main" class="ember-application">
+<div class="ember-view" id="ember4"><span id="ember5" class="ember-view"><!----></span>
+<div id="ember6" class="ember-view"><header class="d-header clearfix" style=""><div class="wrap"><div class="contents clearfix">
+ <div class="title"><a href="https://ubuntu-mate.community/" data-auto-route="true"><img src="RaspberryPITVHDMI_archivos/0c41b826d1c81f42e55160501605d3c96ded0ae1.png" alt="Ubuntu MATE Community" id="site-logo" class="logo-small" width="36"></a></div>
+ <div class="extra-info-wrapper"><div class="extra-info two-rows"><div class="title-wrapper"><h1><div class="topic-statuses"></div><a class="widget-link topic-link" href="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250" title="" data-topic-id="4250"><span>Controlling Raspberry PI with TV Remote, using HDMI CEC</span></a></h1><div class="categories-wrapper"><a class="badge-wrapper bullet" href="https://ubuntu-mate.community/c/tips-tricks-and-tutorials"><span class="badge-category-bg" style="background-color: #A6748F;"></span><span data-drop-close="true" class="badge-category clear-badge" title="If you have a tutorial, how to or other useful tips to share about Ubuntu MATE, then fit them in to one of these subcategories:"><span class="category-name">Tips, Tricks and Tutorials</span></span></a><a class="badge-wrapper bullet" href="https://ubuntu-mate.community/c/tips-tricks-and-tutorials/raspberry-pi-tips"><span class="badge-category-parent-bg" style="background-color: #A6748F;"></span><span class="badge-category-bg" style="background-color: #C6043C;"></span><span data-drop-close="true" class="badge-category clear-badge" title="Topics sharing tips and tricks specifically for the Raspberry Pi port."><span class="category-name">Raspberry Pi</span></span></a></div></div></div></div>
+ <div class="panel clearfix"><span class="header-buttons"><button class="widget-button btn btn-primary btn-small login-button btn-icon-text"><svg class="fa d-icon d-icon-user svg-icon svg-node" aria-hidden="true"><use xlink:href="#user"></use></svg><span class="d-button-label">Log In</span></button></span><ul role="navigation" class="icons d-header-icons"><li class="header-dropdown-toggle"><a href="https://ubuntu-mate.community/search" data-auto-route="true" title="search topics, posts, users, or categories" aria-label="search topics, posts, users, or categories" id="search-button" class="icon btn-flat"><svg class="fa d-icon d-icon-search svg-icon svg-node" aria-hidden="true"><use xlink:href="#search"></use></svg></a></li><li class="header-dropdown-toggle"><a href="" data-auto-route="true" title="go to another topic list or category" aria-label="go to another topic list or category" id="toggle-hamburger-menu" class="icon btn-flat"><svg class="fa d-icon d-icon-bars svg-icon svg-node" aria-hidden="true"><use xlink:href="#bars"></use></svg></a></li></ul></div>
+ </div></div></header></div>
+
+<span id="ember7" class="ember-view"><!----></span>
+
+<div id="main-outlet" class="wrap">
+ <span id="ember8" class="ember-view"><!----></span>
+ <div class="container">
+ <div id="ember9" class="ember-view"></div>
+ <div id="ember10" class="controls ember-view"><!----></div>
+ <div id="ember11" class="ember-view"></div>
+ <div id="ember12" class="hidden create-topics-notice ember-view"><!----></div>
+ <span id="ember13" class="ember-view"><!----></span>
+ </div>
+ <div id="ember14" class="regular category-tips-tricks-and-tutorials-raspberry-pi-tips ember-view"> <div id="ember15" class="ember-view"></div>
+ <div class="container">
+ <div id="ember16" class="ember-view"><!----></div>
+ </div>
+
+<!---->
+ <span id="ember17" class="ember-view"><!----></span>
+
+<div id="topic-title" class="ember-view"><div class="container">
+ <div class="title-wrapper">
+ <h1 data-topic-id="4250">
+ <a>
+ <span class="private-message-glyph"><svg class="fa d-icon d-icon-envelope svg-icon svg-string" xmlns="http://www.w3.org/2000/svg"><use xlink:href="#envelope"></use></svg></span>
+ </a>
+
+ <div id="ember18" class="topic-statuses ember-view"></div>
+ <a href="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250" class="fancy-title" data-ember-action="" data-ember-action-19="19">
+ Controlling Raspberry PI with TV Remote, using HDMI CEC
+ </a>
+
+<!----> </h1>
+
+ <div id="ember20" class="topic-category ember-view"> <a class="badge-wrapper bullet" href="https://ubuntu-mate.community/c/tips-tricks-and-tutorials"><span class="badge-category-bg" style="background-color: #A6748F;"></span><span data-drop-close="true" class="badge-category clear-badge" title="If you have a tutorial, how to or other useful tips to share about Ubuntu MATE, then fit them in to one of these subcategories:"><span class="category-name">Tips, Tricks and Tutorials</span></span></a>
+ <a class="badge-wrapper bullet" href="https://ubuntu-mate.community/c/tips-tricks-and-tutorials/raspberry-pi-tips"><span class="badge-category-bg" style="background-color: #C6043C;"></span><span data-drop-close="true" class="badge-category clear-badge" title="Topics sharing tips and tricks specifically for the Raspberry Pi port."><span class="category-name">Raspberry Pi</span></span></a>
+<div class="topic-header-extra">
+ <div class="list-tags">
+ <!---->
+ </div>
+ <!---->
+</div>
+
+<span id="ember21" class="ember-view"><!----></span>
+</div>
+
+ </div>
+ <span id="ember22" class="ember-view"><!----></span>
+</div>
+</div>
+
+ <div class="container posts">
+ <div class="selected-posts hidden">
+ <p><span id="ember23" class="ember-view">You have selected <b>0</b> posts.</span></p>
+
+ <p><a class="select-all" href="" data-ember-action="" data-ember-action-24="24">select all</a></p>
+
+<!---->
+<!---->
+<!---->
+<!---->
+<!---->
+<p class="cancel"><a href="" data-ember-action="" data-ember-action-25="25">cancel selecting</a></p>
+
+ </div>
+
+<div id="ember26" class="ember-view"><!---->
+ <div id="ember66" class="ember-view"><div class="timeline-container" style="top: 90px"><div class="topic-timeline"><div class="timeline-controls"></div><div class="timeline-scrollarea-wrapper"><div class="timeline-date-wrapper"><a class="widget-link start-date" title="Mar 2016"><span class="d-label">Mar 2016</span></a></div><div style="height: 300px" class="timeline-scrollarea"><div style="height: 210.6779814401748px" class="timeline-padding"></div><div style="height: 50px" class="timeline-scroller"><div class="timeline-handle"></div><div class="timeline-scroller-content"><div class="timeline-replies">4 / 4</div><div class="timeline-ago">Apr 2018</div></div></div><div style="height: 39.32201855982521px" class="timeline-padding"></div></div><div class="timeline-date-wrapper"><a class="widget-link now-date" title="Apr 2018"><span class="d-label">Apr 2018</span></a></div></div><div class="timeline-footer-controls"></div></div></div></div>
+
+</div>
+ <div class="row">
+ <section class="topic-area" id="topic" data-topic-id="4250">
+
+ <div class="posts-wrapper">
+ <div id="ember27" class="loading-container ember-view">
+</div>
+
+ <span id="ember28" class="ember-view"><!----></span>
+
+ <div id="ember29" class="ember-view"><div class="post-stream"><div class="topic-post clearfix topic-owner wiki regular"><article id="post_1" data-post-id="15031" data-topic-id="4250" data-user-id="2055" class="boxed onscreen-post" style=""><a href="" class="tabLoc"></a><div class="row"><div class="topic-avatar"><a class="trigger-user-card main-avatar" href="https://ubuntu-mate.community/u/GizmoXomziG" data-user-card="GizmoXomziG"><img alt="" src="RaspberryPITVHDMI_archivos/2566_2_002.jpg" title="Simon Murgelj" class="avatar" width="45" height="45"></a><div class="poster-avatar-extra"></div></div><div class="topic-body clearfix"><div class="topic-meta-data"><div class="names trigger-user-card"><span class="first username"><a href="https://ubuntu-mate.community/u/GizmoXomziG" data-user-card="GizmoXomziG">GizmoXomziG</a></span></div><div class="post-infos"><div class="post-info edits"><a class="wiki" title="post last edited on 10 Aug 2016 21:40" href="#">3 <svg class="fa d-icon d-icon-pencil-square-o svg-icon svg-node" aria-hidden="true"><use xlink:href="#far-edit"></use></svg></a></div><div class="post-info post-date"><a class="post-date last-wiki-edit" href="https://ubuntu-mate.community/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250" data-share-url="/t/controlling-raspberry-pi-with-tv-remote-using-hdmi-cec/4250" data-post-number="1"><span title="10 Aug 2016 21:40" data-time="1470879652037" data-format="tiny" class="relative-date">Aug '16</span></a></div><div class="read-state read" title="Post is unread"><svg class="fa d-icon d-icon-circle svg-icon svg-node" aria-hidden="true"><use xlink:href="#circle"></use></svg></div></div></div><div class="regular contents"><div class="cooked"><p>Hello everyone.</p>
+<p><strong>Description:</strong><br>
+I wrote a script that connects to HDMI CEC ( cec-client needed ) and
+listens for TV Remote key presses. Based on the keys pressed / released
+(or auto-released; holding down certain keys for too long makes them
+auto-release) different actions are executed. Some examples:</p>
+<ul>
+<li>write letters and numbers using 0-9 keys (simulating 3x4 keypad
+phones - key "2" switches between a-b-c-2, key 9 switches between
+w-x-y-z-9) ( xdotool needed )</li>
+<li>move mouse cursor using up/down/left/right (the longer you hold the
+key down, the faster it goes) and click (enter = left click; channels
+list = right click) ( xdotool needed )</li>
+<li>opening web sites in chomium (red key for YouTube, green for Google, blue for incognito window)</li>
+</ul>
+<p>If you want to use firefox instead of chromium, replace "chromium" with "firefox" in the script below.<br>
+Alternatively, you can just install chromium:</p>
+<pre><code class="hljs">sudo apt-get install chromium-browser
+</code></pre>
+<p>See all the available keys below:</p>
+<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://ubuntu-mate.community/uploads/default/original/2X/e/e00e46bb720d634bb6a2ba84cad84c05078fd391.png" data-download-href="https://ubuntu-mate.community/uploads/default/e00e46bb720d634bb6a2ba84cad84c05078fd391" title="TVRemoteCECpng.png"><img src="RaspberryPITVHDMI_archivos/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_401x500.png" class="d-lazyload" srcset="https://ubuntu-mate.community/uploads/default/optimized/2X/e/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_401x500.png, https://ubuntu-mate.community/uploads/default/optimized/2X/e/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_601x750.png 1.5x, https://ubuntu-mate.community/uploads/default/optimized/2X/e/e00e46bb720d634bb6a2ba84cad84c05078fd391_2_802x1000.png 2x" width="401" height="500"><div class="meta">
+<svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use xlink:href="#far-image"></use></svg><span class="filename">TVRemoteCECpng.png</span><span class="informations">828×1030 101 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use xlink:href="#discourse-expand"></use></svg>
+</div></a></div><p></p>
+<p>These are the keys supported by my TV Remote. You can modify the script for your TV Remote, see Modification below.</p>
+<p><strong>Installation:</strong><br>
+First you need to install cec-client and xdotool; using terminal:</p>
+<pre><code class="hljs">sudo apt-get install cec-client xdotool
+</code></pre>
+<p>Test if you can receive TV Remote button presses with cec-client; using terminal:</p>
+<pre><code class="hljs">cec-client
+</code></pre>
+<p>You should see some diagnostic messages. Press numeric keys (as they
+are most likely to be supported) on your TV Remote. Watch out for new
+lines, especially of this form:</p>
+<pre><code class="hljs markdown">something something <span class="hljs-strong">**key pressed: 8**</span> something something
+</code></pre>
+<p>If you see this kind of messages, then this should work for you.<br>
+If not, make sure you've got CEC enabled on your TV (see this <a href="http://kodi.wiki/view/CEC#Trade_names" rel="nofollow noopener">WIKI <span class="badge badge-notification clicks" title="99 clicks">99</span></a> for more info).<br>
+For my TV, pressing the Source button a couple of times helped (so it
+kind-of flips trough all the sources and circles back to the Raspberry
+Pi, detects CEC and connects to it).</p>
+<p>So, on to the script / installation:<br>
+Create the file cecremote.sh and mark it as executable; using terminal:</p>
+<pre><code class="hljs css"><span class="hljs-selector-tag">touch</span> <span class="hljs-selector-tag">cecremote</span><span class="hljs-selector-class">.sh</span>
+<span class="hljs-selector-tag">chmod</span> +<span class="hljs-selector-tag">x</span> <span class="hljs-selector-tag">cecremote</span><span class="hljs-selector-class">.sh</span>
+</code></pre>
+<p>Then open it; using terminal:</p>
+<pre><code class="hljs css"><span class="hljs-selector-tag">nano</span> <span class="hljs-selector-tag">cecremote</span><span class="hljs-selector-class">.sh</span>
+</code></pre>
+<p>Copy - paste this in the file:</p>
+<pre><code class="hljs bash"><span class="hljs-meta">#!/bin/bash</span>
+<span class="hljs-keyword">function</span> keychar {
+ parin1=<span class="hljs-variable">$1</span> <span class="hljs-comment">#first param; abc1</span>
+ parin2=<span class="hljs-variable">$2</span> <span class="hljs-comment">#second param; 0=a, 1=b, 2=c, 3=1, 4=a, ...</span>
+ parin2=$((parin2)) <span class="hljs-comment">#convert to numeric</span>
+ parin1len=<span class="hljs-variable">${#parin1}</span> <span class="hljs-comment">#length of parin1</span>
+ parin2pos=$((parin2 % parin1len)) <span class="hljs-comment">#position mod</span>
+ char=<span class="hljs-variable">${parin1:parin2pos:1}</span> <span class="hljs-comment">#char key to simulate</span>
+ <span class="hljs-keyword">if</span> [ <span class="hljs-string">"<span class="hljs-variable">$parin2</span>"</span> -gt 0 ]; <span class="hljs-keyword">then</span> <span class="hljs-comment">#if same key pressed multiple times, delete previous char; write a, delete a write b, delete b write c, ...</span>
+ xdotool key <span class="hljs-string">"BackSpace"</span>
+ <span class="hljs-keyword">fi</span>
+ <span class="hljs-comment">#special cases for xdotool ( X Keysyms )</span>
+ <span class="hljs-keyword">if</span> [ <span class="hljs-string">"<span class="hljs-variable">$char</span>"</span> = <span class="hljs-string">" "</span> ]; <span class="hljs-keyword">then</span> char=<span class="hljs-string">"space"</span>; <span class="hljs-keyword">fi</span>
+ <span class="hljs-keyword">if</span> [ <span class="hljs-string">"<span class="hljs-variable">$char</span>"</span> = <span class="hljs-string">"."</span> ]; <span class="hljs-keyword">then</span> char=<span class="hljs-string">"period"</span>; <span class="hljs-keyword">fi</span>
+ <span class="hljs-keyword">if</span> [ <span class="hljs-string">"<span class="hljs-variable">$char</span>"</span> = <span class="hljs-string">"-"</span> ]; <span class="hljs-keyword">then</span> char=<span class="hljs-string">"minus"</span>; <span class="hljs-keyword">fi</span>
+ xdotool key <span class="hljs-variable">$char</span>
+}
+datlastkey=$(date +%s%N)
+strlastkey=<span class="hljs-string">""</span>
+intkeychar=0
+intmsbetweenkeys=2000 <span class="hljs-comment">#two presses of a key sooner that this makes it delete previous key and write the next one (a-&gt;b-&gt;c-&gt;1-&gt;a-&gt;...)</span>
+intmousestartspeed=10 <span class="hljs-comment">#mouse starts moving at this speed (pixels per key press)</span>
+intmouseacc=10 <span class="hljs-comment">#added to the mouse speed for each key press (while holding down key, more key presses are sent from the remote)</span>
+intmousespeed=10
+
+<span class="hljs-keyword">while</span> <span class="hljs-built_in">read</span> oneline
+<span class="hljs-keyword">do</span>
+ keyline=$(<span class="hljs-built_in">echo</span> <span class="hljs-variable">$oneline</span> | grep <span class="hljs-string">" key "</span>)
+ <span class="hljs-comment">#echo $keyline --- debugAllLines</span>
+ <span class="hljs-keyword">if</span> [ -n <span class="hljs-string">"<span class="hljs-variable">$keyline</span>"</span> ]; <span class="hljs-keyword">then</span>
+ datnow=$(date +%s%N)
+ datdiff=$(((<span class="hljs-variable">$datnow</span> - <span class="hljs-variable">$datlastkey</span>) / 1000000)) <span class="hljs-comment">#bla bla key pressed: previous channel (123)</span>
+ strkey=$(grep -oP <span class="hljs-string">'(?&lt;=sed: ).*?(?= \()'</span> &lt;&lt;&lt; <span class="hljs-string">"<span class="hljs-variable">$keyline</span>"</span>) <span class="hljs-comment">#bla bla key pres--&gt;sed: &gt;&gt;previous channel&lt;&lt; (&lt;--123)</span>
+ strstat=$(grep -oP <span class="hljs-string">'(?&lt;=key ).*?(?=:)'</span> &lt;&lt;&lt; <span class="hljs-string">"<span class="hljs-variable">$keyline</span>"</span>) <span class="hljs-comment">#bla bla --&gt;key &gt;&gt;pressed&lt;&lt;:&lt;-- previous channel (123)</span>
+ strpressed=$(<span class="hljs-built_in">echo</span> <span class="hljs-variable">$strstat</span> | grep <span class="hljs-string">"pressed"</span>)
+ strreleased=$(<span class="hljs-built_in">echo</span> <span class="hljs-variable">$strstat</span> | grep <span class="hljs-string">"released"</span>)
+ <span class="hljs-keyword">if</span> [ -n <span class="hljs-string">"<span class="hljs-variable">$strpressed</span>"</span> ]; <span class="hljs-keyword">then</span>
+ <span class="hljs-comment">#echo $keyline --- debug</span>
+ <span class="hljs-keyword">if</span> [ <span class="hljs-string">"<span class="hljs-variable">$strkey</span>"</span> = <span class="hljs-string">"<span class="hljs-variable">$strlastkey</span>"</span> ] &amp;&amp; [ <span class="hljs-string">"<span class="hljs-variable">$datdiff</span>"</span> -lt <span class="hljs-string">"<span class="hljs-variable">$intmsbetweenkeys</span>"</span> ]; <span class="hljs-keyword">then</span>
+ intkeychar=$((intkeychar + 1)) <span class="hljs-comment">#same key pressed for a different char</span>
+ <span class="hljs-keyword">else</span>
+ intkeychar=0 <span class="hljs-comment">#different key / too far apart</span>
+ <span class="hljs-keyword">fi</span>
+ datlastkey=<span class="hljs-variable">$datnow</span>
+ strlastkey=<span class="hljs-variable">$strkey</span>
+ <span class="hljs-keyword">case</span> <span class="hljs-string">"<span class="hljs-variable">$strkey</span>"</span> <span class="hljs-keyword">in</span>
+ <span class="hljs-string">"1"</span>)
+ xdotool key <span class="hljs-string">"BackSpace"</span>
+ ;;
+ <span class="hljs-string">"2"</span>)
+ keychar <span class="hljs-string">"abc2"</span> intkeychar
+ ;;
+ <span class="hljs-string">"3"</span>)
+ keychar <span class="hljs-string">"def3"</span> intkeychar
+ ;;
+ <span class="hljs-string">"4"</span>)
+ keychar <span class="hljs-string">"ghi4"</span> intkeychar
+ ;;
+ <span class="hljs-string">"5"</span>)
+ keychar <span class="hljs-string">"jkl5"</span> intkeychar
+ ;;
+ <span class="hljs-string">"6"</span>)
+ keychar <span class="hljs-string">"mno6"</span> intkeychar
+ ;;
+ <span class="hljs-string">"7"</span>)
+ keychar <span class="hljs-string">"pqrs7"</span> intkeychar
+ ;;
+ <span class="hljs-string">"8"</span>)
+ keychar <span class="hljs-string">"tuv8"</span> intkeychar
+ ;;
+ <span class="hljs-string">"9"</span>)
+ keychar <span class="hljs-string">"wxyz9"</span> intkeychar
+ ;;
+ <span class="hljs-string">"0"</span>)
+ keychar <span class="hljs-string">" 0.-"</span> intkeychar
+ ;;
+ <span class="hljs-string">"previous channel"</span>)
+ xdotool key <span class="hljs-string">"Return"</span> <span class="hljs-comment">#Enter</span>
+ ;;
+ <span class="hljs-string">"channel up"</span>)
+ xdotool click 4 <span class="hljs-comment">#mouse scroll up</span>
+ ;;
+ <span class="hljs-string">"channel down"</span>)
+ xdotool click 5 <span class="hljs-comment">#mouse scroll down</span>
+ ;;
+ <span class="hljs-string">"channels list"</span>)
+ xdotool click 3 <span class="hljs-comment">#right mouse button click"</span>
+ ;;
+ <span class="hljs-string">"up"</span>)
+ intpixels=$((-1 * intmousespeed))
+ xdotool mousemove_relative -- 0 <span class="hljs-variable">$intpixels</span> <span class="hljs-comment">#move mouse up</span>
+ intmousespeed=$((intmousespeed + intmouseacc)) <span class="hljs-comment">#speed up</span>
+ ;;
+ <span class="hljs-string">"down"</span>)
+ intpixels=$(( 1 * intmousespeed))
+ xdotool mousemove_relative -- 0 <span class="hljs-variable">$intpixels</span> <span class="hljs-comment">#move mouse down</span>
+ intmousespeed=$((intmousespeed + intmouseacc)) <span class="hljs-comment">#speed up</span>
+ ;;
+ <span class="hljs-string">"left"</span>)
+ intpixels=$((-1 * intmousespeed))
+ xdotool mousemove_relative -- <span class="hljs-variable">$intpixels</span> 0 <span class="hljs-comment">#move mouse left</span>
+ intmousespeed=$((intmousespeed + intmouseacc)) <span class="hljs-comment">#speed up</span>
+ ;;
+ <span class="hljs-string">"right"</span>)
+ intpixels=$(( 1 * intmousespeed))
+ xdotool mousemove_relative -- <span class="hljs-variable">$intpixels</span> 0 <span class="hljs-comment">#move mouse right</span>
+ intmousespeed=$((intmousespeed + intmouseacc)) <span class="hljs-comment">#speed up</span>
+ ;;
+ <span class="hljs-string">"select"</span>)
+ xdotool click 1 <span class="hljs-comment">#left mouse button click</span>
+ ;;
+ <span class="hljs-string">"return"</span>)
+ xdotool key <span class="hljs-string">"Alt_L+Left"</span> <span class="hljs-comment">#WWW-Back</span>
+ ;;
+ <span class="hljs-string">"exit"</span>)