Electrónica y Programación en Personal
«Si no se soluciona con un script en Python entonces no es viable»

por Yeison Cardona el 31 de agosto de 2011 a las 19:40 UTC
Comercialmente existen unos accesorios bastante geeks para los amantes de las redes sociales, los chats y los emoticones, consiste en un teclado de emoticones por conexión USB para computador, bueno, yo no me he quedado atrás y con pequeño script en python y Pinguino he emulado dicho dispositivo.

http://www.bajca.com/

Dependencias
Se usa xdotool para emular pulsaciones de teclas, lo podemos instalar mediante:
sudo apt-get install xdotool
También se ha usado el paquete Pynguino y un script en Python.
Como funciona
Básicamente después de identificar una tecla pulsada en el teclado hexadecimal, se le es asignada una cadena de texto que contiene el emoticón, posteriormente esta cadena es copiada al portapapeles del sistema y después con xdotool se ejecuta el comando para emular la pulsación Control+V y así es como el emoticón es añadido al texto que se esté editando.
Script Python
#! /usr/bin/python
#-*- coding: utf-8 -*-

import os, gtk
from time import sleep as delay
from pynguino import PinguinoProcessing

pinguino=PinguinoProcessing()    

while True:
    if pinguino.RecursiveConect(): break
    else: raw_input("Interntar de nuevo?")

teclado=[[":)",":(",":/",":D"],
         [":P",";)",":O",":3"],
         ["O_o","T_T","^_^","~_O"],
         [":D","u_u","<(\")","\\m/"]]

for pin in range(4):
    pinguino.pinMode(pin,"output")
    pinguino.digitalWrite(pin,"low")

for pin in range(4,8):
    pinguino.pinMode(pin,"input")
    
def cargar_clipboard(emoticon):
    clipboard = gtk.clipboard_get()
    clipboard.set_text(emoticon)
    clipboard.store()

while True:
    for columna in range(4):
        pinguino.digitalWrite(columna,"high")
        for fila in range(4,8):
            if pinguino.digitalRead(fila,bool):
                emoticon=teclado[columna][fila-4]
                cargar_clipboard(emoticon)
                os.system("xdotool key Control+v")
                delay(0.2)
        pinguino.digitalWrite(columna,"low")


Conexión


Captura




También podría interesarte:

Añadir un comentario:
Si desean una respuesta para su comentario sólo deben agregarme en G+ y hacer una mención a Yeison Cardona, así les podré responder lo antes posible.