Am Mittwoch 31 August 2011, 17:18:26 schrieb Space Cake: > 2010-08-17 21:34 keltezéssel, Albert Hopkins írta: > > On Tue, 2010-08-17 at 20:43 +0200, meino.cra...@gmx.de wrote: > >> Bill Longman <bill.long...@gmail.com> [10-08-17 20:16]: > >>> On 08/17/2010 10:56 AM, Albert Hopkins wrote: > >>>> On Tue, 2010-08-17 at 19:20 +0200, meino.cra...@gmx.de > >>>> > >>>> wrote: > >>>>> Hi, > >>>>> > >>>>> on YouTube there was a Blender-2.5 tutorial with audio. > >>>>> There was an interesting detail: While there were spoken > >>>>> instructions one can hear one typing on its keyboard. Each > >>>>> hit on one of the keys made the sound of an old typewriter > >>>>> (no, it was not the sound of the legendary "IBM Model M" > >>>>> keyboard ;) ). > >>>>> > >>>>> How can I achieve this? What software can I use to make > >>>>> this geeky feature to come true. Unfortunately I have no > >>>>> idea, how to name this kind of what(?) ... > >>>>> > >>>>> Thank you very much for any hint in advance! Best regards, > >>>>> mcc > >>>> > >>>> There probably a number of ways to do this. > >>>> > >>>> A cheap and easy way would be to use xev to monitor a window > >>>> and then pipe the stderr to a a program that waits for a > >>>> keypress event and then plays an apropriate. > >>>> > >>>> A less cheap way would be to have our program do what xev > >>>> does instead of using a pipe. > >>> > >>> Or you could set your X keyclick using xset. > >> > >> Hi, > >> > >> thanks a lot for your replies! :) Is there any program already, > >> which does this? A daemon or...<insert missing words here> > >> > >> Best regards, mcc > > > > Well I found out that when you pass window id to xev it does not > > trap keyboard presses per-sé. But there is another way... > > > > Anway the following is a quick hack (in python). It pretty much > > works except it also seems to trap mouse presses. I got the .wav > > file at http://www.soundjay.com/typewriter-sounds.html > > > > I tried using 'xset c' but it basically does nothing for me. My > > guess is that it does work it basically sends the a BELL to the > > console. > > > > > > --- 8< CUT HERE > > --------------------------------------------------- import sys > > import subprocess > > > > soundfile = 'typewriter-key-1.wav' > > > > def main(): window_id = sys.argv[1] cmd = ['xev', '-id', > > window_id] > > > > p1 = subprocess.Popen(cmd, stdout=subprocess.PIPE) while True: line > > = p1.stdout.readline() if line.find('atom 0x14d') > -1: > > subprocess.Popen(['aplay', soundfile], stderr=open('/dev/null', > > 'w')) > > > > > > if __name__ == '__main__': main() > > Guys, this is awesome :) Let's make an ebuild and put in portage :) > > L:
why? man xset really guys. Why do it the long, hard and stupid way if there have been simple, built in solutions for longer than some of you live? -- #163933