Skip to main content

Read Clipboard in Ubuntu

If your like me lazy in reading stuff then TTS like espeak, festival is perfect. For me it doesn't matter if it speaks like computer but as long as someone thing can read it for me its perfect. So in this journey i had made 2 scripts that could help you. This was testing in Ubuntu 9.04 with python, espeak and metacity as default.

First, create a python script or download this file, please rename the file to your folder of choice, for our example we would use /home/almondmendoza/clipboard/getClipboardContents.py
import gtk
clip = gtk.clipboard_get(selection='PRIMARY')
print clip.wait_for_text()


The previous script would get our clipboard, now to speak it we would use espeak coz its build in by default, we would have to created a shell script or download this (this change voice to en-r and speed to 200), please rename the file, for our example /home/almondmendoza/clipboard/speakClipboard.sh
#!/bin/sh
word=`/usr/bin/python /home/almondmendoza/clipboard/getClipboardContents.py`
espeak ". $word"


Now we need to make the shell script executable with 777 permission
sudo chmod a+x /home/almondmendoza/clipboard/speakClipboard.sh
sudo chmod 777 /home/almondmendoza/clipboard/speakClipboard.sh


You could execute it now to speak the clipboard by
/home/almondmendoza/clipboard/speakClipboard.sh

For the fun part we would bind this to a key combination, but first we need to create a symbolic link to /usr/bin where it could be executed properly (i really dont know the reason but it works)
sudo ln /home/almondmendoza/clipboard/speakClipboard.sh /usr/bin/speakMyClipboard

Next bind it to a key combination, i bind it to the first command with Ctrl + Alt + C
gconftool-2 -s /apps/metacity/keybinding_commands/command_1 -t string 'speakMyClipboard'
gconftool-2 -s /apps/metacity/global_keybindings/run_command_1 -t string '<Control><Alt>C'


There are some error/bugs on gtk when i was doing this, i just updated my ubuntu and it was fixed. Another error was most of the time it cannot speak the whole clipboard or couldn't speak at all, i think its espeak's problem so i cant help on this one, just press the combination again and again. If anyone has a better way to do this please post a comment.

Hope this helps.


Some comments from Almondmendoza
#!/bin/bash
number=$((RANDOM%100))
word=`/usr/bin/python //home/mylo9000/Scripts/clipboard/getclipboardcontents.py`

espeak -p $number -v “en+m” “. $word . . . . end of line. $number” –stdout | aplay



for those using ubuntu jaunty as a bug fix change espeak command to:

espeak ” $word ” –stdout | aplay

espeak package in jaunty is not playing nice with port audio.


I love this script its so easy to setup. i have however needed to modify it a little.
firstly i needed to have the alsa-oss package installed (i’m using Ubuntu 8.10)
i then changed the sh file to invok espeak using:
aoss espeak -v “en+m2″ “. $word . . . . ”
doing this allows speakMyClipboard.sh to work while other apps are using the sound card. if you don’t and you have music playing then it won’t work.

the extra periods at the end are there to add a bit of a pause to the end of whats being said.
otherwise aoss cuts off the buffer too soon and you don’t get the last word of the selection.

i also have a launcher in my gnome pannel that i can click on and it will speak the clipboard. this is if i’m feeling lazy and won’t want to use the key combo.

i hope this info helps because this has been a great script for me and i really appreciate it.

Comments

  1. I use Gespeaker... works and I can pause it.

    ReplyDelete
  2. Thank you!! That was awesome! Exactly what I needed...

    ReplyDelete

Post a Comment

Popular posts from this blog

Unlockd Android Auto Open

Now that Unlockd has reached its doomed. Here is a script where i just downloaded android tools and automatically have my phone open, I believe you can use this for games that requires constant tapping of the screen (as long as it's not one of the fast tap one as adb has a delay). for i in `seq 1 50`; do # open the phone adb shell input keyevent 26 # keep the phone open for 8 seconds sleep 8 # close the phone adb shell input keyevent 26 # randomised sleep to make it look real sleep $[ ( $RANDOM % 10 ) + 1 ]s done if your phone has passcode for i in `seq 1 50`; do adb shell input keyevent 26 sleep 1 # swipe from bottom to up adb shell input touchscreen swipe 530 1280 1030 480 # enter your passcode adb shell input text <Your passcode> # check button adb shell input keyevent 66 sleep 8 adb shell input keyevent 26 sl…

How to disable textfield on AS3

This took me 2 hours to find out how to disable textfield on AS3, its not the perfect solution but it seems to be the only solution.

private var txtField:Textfield;
...
this.txtField = this.getChildByName("txtField");
this.txtField.mouseEnabled = false;
this.txtField.tabEnabled = false;

and to turn it enable again:
this.txtField.mouseEnabled = true;
this.txtField.tabEnabled = true;

You could also do this
//disable input
myTextField.selectable = false;
myTextField.type = TextFieldType.DYNAMIC;

//enable input
myTextField.selectable = true;
myTextField.type = TextFieldType.INPUT;


While this sound cheap coz you have to disable the mouse and the tab of that component and not the component itself, it seems to be the only solution. Thanks Adobe!!!!!!!!