LinuxParty
Una de las cosas que nos trajo HTML5 fue el almacenamiento de datos de forma offline, gracias a un conjunto de tecnologías como IndexedDB que nos permite administrar una base de datos en la mayoría de los navegadores de una forma más avanzada de lo que antiguamente nos ofrecían las cookies.
IndexedDB no es una base de datos relacional (con sus tablas, columnas…) sino que se podría llamar un “almacén de objetos“ (literalmente) ya que dentro de la base de datos que usemos en nuestra aplicación web creamos almacenes y en su interior añadimos objetos (como el siguiente):
Los teclados virtuales siguen siendo útiles en muchos escenarios: pantallas táctiles, kioscos, terminales de autoservicio, formularios especiales o proyectos donde queremos ofrecer una forma alternativa de entrada de texto sin depender del teclado físico.
En este tutorial vamos a crear un teclado virtual funcional con jQuery, manteniendo el enfoque didáctico en esta librería, pero usando una forma de trabajo más clara y actual. El objetivo será construir un teclado en pantalla que permita escribir en un campo de texto, borrar caracteres y activar mayúsculas mediante la tecla Shift.
La idea no es solo que funcione, sino que también sirva como base para ampliarlo más adelante.
En este tutorial vamos a crear un teclado virtual completamente funcional usando jQuery, ideal para:
- Formularios en pantallas táctiles
- Sistemas POS o kioscos
- Interfaces donde queremos evitar el uso del teclado físico
Aunque hoy existen alternativas modernas, jQuery sigue siendo útil para proyectos rápidos, mantenimiento de código legacy o aprendizaje práctico del DOM.
🎯 Resultado final
Al finalizar tendrás:
- Un teclado en pantalla
- Soporte para escribir en un input
- Tecla Shift
- Tecla Backspace
- Compatible con clic y pantallas táctiles
🧱 1. Estructura HTML
Primero creamos el input y el teclado:
<input type="text" id="text-input" placeholder="Escribe aquí..."> <ul id="keyboard"> <li class="key" data-key="1">1</li> <li class="key" data-key="2">2</li> <li class="key" data-key="3">3</li> <li class="key" data-key="q">q</li> <li class="key" data-key="w">w</li> <li class="key" data-key="e">e</li> <li class="key special" data-key="shift">Shift</li> <li class="key" data-key="a">a</li> <li class="key" data-key="s">s</li> <li class="key special" data-key="backspace">←</li> </ul>
👉 Usamos data-key para almacenar el valor de cada tecla (más limpio y escalable).
🎨 2. Estilos CSS básicos
#keyboard {
list-style: none;
padding: 0;
max-width: 400px;
}
.key {
display: inline-block;
padding: 10px;
margin: 5px;
background: #eee;
border-radius: 5px;
cursor: pointer;
}
.key:hover {
background: #ddd;
}
.special {
background: #ccc;
}
👉 Puedes mejorar esto con Grid si quieres una distribución más profesional.
⚙️ 3. Lógica con jQuery
Incluimos jQuery actualizado:
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
Ahora la lógica principal:
$(function() { let shiftOn = false; const $input = $("#text-input"); $(".key").on("click touchstart", function() { let key = $(this).data("key"); // SHIFT if (key === "shift") { shiftOn = !shiftOn; return; } // BACKSPACE if (key === "backspace") { let current = $input.val(); $input.val(current.slice(0, -1)); return; } // MAYÚSCULAS if (shiftOn) { key = key.toUpperCase(); } // AÑADIR TEXTO $input.val($input.val() + key); }); });
🧠 4. Explicación rápida
-
$(function(){}) → ejecuta cuando el DOM está listo
.on("click touchstart") → funciona en PC y móviles data("key") → obtiene el valor de la tecla shiftOn → controla mayúsculas .val() → lee/escribe en el input
➕ 5. Mejoras opcionales
Puedes ampliar fácilmente:
✔ Añadir más teclas
Solo añade más <li> con data-key.
✔ Tecla Enter
<li class="key special" data-key="enter">Enter</li> if (key === "enter") { alert("Enviar formulario"); return; }
✔ Desactivar Shift tras usarlo
if (shiftOn) {
key = key.toUpperCase();
shiftOn = false;
}
✔ Añadir animaciones
.key:active { transform: scale(0.95); }
📱 6. Compatibilidad móvil
Gracias a:
.on("click touchstart")
👉 El teclado funciona en:
- Móviles
- Tablets
- Pantallas táctiles
⚠️ 7. Buenas prácticas con jQuery hoy
Aunque jQuery sigue siendo útil:
👉 Úsalo cuando:
- Mantienes proyectos antiguos
- Necesitas rapidez
- El entorno ya lo utiliza
👉 Evítalo cuando:
- Empiezas proyectos modernos grandes
- Usas frameworks como React o Vue
💡 Conclusión
Has creado un teclado virtual funcional con jQuery moderno, aplicando buenas prácticas actuales:
✔ Código limpio
✔ Eventos modernos (.on)
✔ Uso de data-*
✔ Compatible con móviles
Código fuente completo.
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Teclado virtual con jQuery</title> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <style> body { font-family: Arial, sans-serif; background: #f4f4f4; margin: 0; padding: 30px; } .contenedor { max-width: 900px; margin: 0 auto; background: #ffffff; border-radius: 10px; padding: 25px; box-shadow: 0 2px 10px rgba(0,0,0,0.08); } h1 { margin-top: 0; color: #222; } p { color: #444; line-height: 1.6; } .zona-input { margin-bottom: 25px; } #text-input { width: 100%; box-sizing: border-box; padding: 14px; font-size: 18px; border: 1px solid #ccc; border-radius: 8px; outline: none; } #text-input:focus { border-color: #888; } #keyboard { display: flex; flex-direction: column; gap: 10px; user-select: none; } .fila { display: flex; flex-wrap: wrap; gap: 8px; } .key { min-width: 50px; padding: 12px 14px; text-align: center; background: #e9e9e9; border: 1px solid #cfcfcf; border-radius: 8px; cursor: pointer; transition: background 0.2s ease, transform 0.1s ease; font-size: 16px; } .key:hover { background: #dddddd; } .key:active { transform: scale(0.96); } .key.special { background: #d8d8d8; font-weight: bold; } .key.space { flex: 1; } .key.active-shift { background: #bfcde0; border-color: #94afd0; } .nota { margin-top: 20px; font-size: 14px; color: #666; } @media (max-width: 600px) { .key { min-width: 42px; padding: 10px 12px; font-size: 14px; } #text-input { font-size: 16px; } } </style> </head> <body> <div class="contenedor"> <h1>Teclado virtual con jQuery</h1> <p> Este ejemplo muestra cómo crear un teclado virtual funcional usando jQuery. Podrás escribir en el campo de texto, activar mayúsculas con Shift y borrar con Backspace. </p> <div class="zona-input"> <input type="text" id="text-input" placeholder="Escribe aquí..."> </div> <div id="keyboard"> <div class="fila"> <div class="key" data-key="1">1</div> <div class="key" data-key="2">2</div> <div class="key" data-key="3">3</div> <div class="key" data-key="4">4</div> <div class="key" data-key="5">5</div> <div class="key" data-key="6">6</div> <div class="key" data-key="7">7</div> <div class="key" data-key="8">8</div> <div class="key" data-key="9">9</div> <div class="key" data-key="0">0</div> </div> <div class="fila"> <div class="key" data-key="q">q</div> <div class="key" data-key="w">w</div> <div class="key" data-key="e">e</div> <div class="key" data-key="r">r</div> <div class="key" data-key="t">t</div> <div class="key" data-key="y">y</div> <div class="key" data-key="u">u</div> <div class="key" data-key="i">i</div> <div class="key" data-key="o">o</div> <div class="key" data-key="p">p</div> </div> <div class="fila"> <div class="key" data-key="a">a</div> <div class="key" data-key="s">s</div> <div class="key" data-key="d">d</div> <div class="key" data-key="f">f</div> <div class="key" data-key="g">g</div> <div class="key" data-key="h">h</div> <div class="key" data-key="j">j</div> <div class="key" data-key="k">k</div> <div class="key" data-key="l">l</div> <div class="key" data-key="ñ">ñ</div> </div> <div class="fila"> <div class="key special" data-key="shift">Shift</div> <div class="key" data-key="z">z</div> <div class="key" data-key="x">x</div> <div class="key" data-key="c">c</div> <div class="key" data-key="v">v</div> <div class="key" data-key="b">b</div> <div class="key" data-key="n">n</div> <div class="key" data-key="m">m</div> <div class="key special" data-key="backspace">⌫</div> </div> <div class="fila"> <div class="key" data-key=".">.</div> <div class="key" data-key=",">,</div> <div class="key" data-key="-">-</div> <div class="key space" data-key=" ">Espacio</div> <div class="key special" data-key="clear">Limpiar</div> </div> </div> <p class="nota"> Consejo: este ejemplo es una buena base para ampliarlo con más teclas, diseño visual avanzado o validaciones. </p> </div> <script> $(function () { let shiftOn = false; const $input = $("#text-input"); const $shiftKey = $('.key[data-key="shift"]'); function insertarTexto(texto) { $input.val($input.val() + texto); $input.focus(); } function borrarUltimoCaracter() { const valorActual = $input.val(); $input.val(valorActual.slice(0, -1)); $input.focus(); } function actualizarEstadoShift() { if (shiftOn) { $shiftKey.addClass("active-shift"); } else { $shiftKey.removeClass("active-shift"); } } $(".key").on("click touchstart", function (e) { e.preventDefault(); let key = $(this).data("key"); if (key === "shift") { shiftOn = !shiftOn; actualizarEstadoShift(); return; } if (key === "backspace") { borrarUltimoCaracter(); return; } if (key === "clear") { $input.val(""); $input.focus(); return; } if (typeof key === "string" && shiftOn) { key = key.toUpperCase(); } insertarTexto(key); if (shiftOn) { shiftOn = false; actualizarEstadoShift(); } }); }); </script> </body> </html>
Estaba cansado de escribir mi contraseña en mi viejo ordenador de casa cada vez que lo encendía (que lo utilizo para ver la tele, mientras escribo vuestros artículos en el portatil). Especialmente, quiero encender y dejar de hacer otras cosas. Entonces, no es necesario perder tiempo en esperar a que introduzca la contraseña. Después de hacer bastantes búsquedas en línea y tratar (tras muchos reinicios) de que funcionase, di con la siguiente forma de habilitar el inicio de sesión automático para GNOME. Y funciona igual si quiero permitir inicio de sesión automático para el escritorio KDE, y cualquier otro LXDE, XFCE, etc.
Matthias Clasen en nombre del equipo de lanzamiento de GNOME ha anunciado que han decidido eliminar el "modo de retorno" de GNOME en la próxima versión 3.8 que permitía un "GNOME clásico" que no dependía de OpenGL/3D y era más como el traitional escritorio GNOME 2.
Los desarrolladores de GNOME han decidido abandonar este modo. Ahora, para los usuarios de GNOME sin una adecuada GPU ni controladores, si desean seguir utilizando GNOME, tendrán que usar LLVMpipe para una experiencia de software de aceleración de la Shell GNOME.
Decir que un teorema es “el teorema más maravilloso de las matemáticas” es mucho decir teniendo en cuenta la gran cantidad de maravillas en forma de resultado matemático que podemos encontrar a lo largo y ancho del conocimiento de esta ciencia. Pero lo que no se le podrá negar al teorema que os presento en este post es que reúne una gran cantidad de detalles (enunciado simple, conclusión realmente sorprendente e inesperada y demostración relativamente elemental) de esos que convierten un resultado matemático en un teorema maravilloso.
Una chocante comparación de escáneres cerebrales a partir de dos niños de tres años de edad, revela una nueva evidencia sobre la notable repercusión que el amor de una madre tiene sobre el desarrollo cerebral de los niños. Las escalofriantes imágenes revelan que el cerebro izquierdo, que pertenece a una niña normal de 3 años de edad, que es significativamente más grande y contiene un menor número de manchas y áreas oscuras 'difusas' que el hemisferio derecho del cerebro, que pertenece a la de un niño de 3 años de edad que ha sufrido negligencia extrema. Los neurólogos dicen que las últimas imágenes proporcionan más evidencias sobre la manera en que los niños son tratados en sus primeros años es importante no sólo para el desarrollo emocional del niño, sino también para determinar el tamaño de sus cerebros. Los expertos dicen que la diferencia considerable en los dos cerebros es causada principalmente por la diferencia en la forma en que cada niño fue tratado por sus madres.
Quien anotó 100 hace un siglo, anotaría 70 hoy, una persona que dio como promedio normal hace un siglo, hoy sería declarado mentalmente retardado. Este extraño hallazgo —bautizado como el "efecto Flynn" por Richard Herrnstein y Charles Murray en The Bell Curve— ha crecido en evidencia desde 2007 declaró Malcolm Gladwell en The New Yorker que "el efecto Flynn ha pasado de la teoría a los hechos". Sin embargo, los investigadores aún no se ponen de acuerdo sobre cuales resultados están subiendo. ¿Somos simplemente mejores haciendo los exámenes? ¿Son las propias pruebas una mala medida de inteligencia? ¿O el aumento de las puntuaciones de CI realmente significan que somos cada vez más inteligentes?
Hoy en día no nos resulta raro, por ejemplo, trabajar en una ciudad y que el servicio técnico de soporte IT de nuestra empresa esté en otra ciudad distinta y que resuelvan buena parte de nuestras incidencias de manera remota. De hecho, poco a poco nos hemos ido acostumbrando a conectarnos en remoto a otros equipos, ya sean nuestros o de otros usuarios, para minimizar desplazamientos y trabajar de una manera cómoda.
No son pocas las veces que nos vimos obligados a trabajar en Windows por diversas razones (por ejemplo, por entornos de programación nativos de Microsoft). Pero usando Windows también podemos sentirnos cerca de nuestro sistema GNU/Linux; es por ello que presentamos herramientas, tanto para expertos como novatos en GNU/Linux, que pueden ser instaladas en Windows y nos permitirán interactuar con nuestra distro de preferencia o bien animarse a conocer otro mundo para aquellos recién iniciados.
Bajo el mandato de Adolf Hitler, en la Alemania nazi se realizaron miles de experimentos a través de los cuales querían diseñar una sociedad perfecta, hecha a la medida de los caprichos del Führer.
Entre los delirantes experimentos realizados, estuvo el de conseguir una súper raza canina en el que los perros tuviesen la habilidad de hablar, leer y escribir.
Este dato se recoge en el nuevo libro publicado por el historiador y doctor de la Universidad de Cardiff, Jan Bondeson, titulado: "Perros Increíbles: un compilación de curiosidades caninas".




