On 2011. aug. 31., szerda, 17.54.15 CEST, Volker Armin Hemmann wrote: > 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, [email protected] wrote: >>>> Bill Longman <[email protected]> [10-08-17 20:16]: >>>>> On 08/17/2010 10:56 AM, Albert Hopkins wrote: >>>>>> On Tue, 2010-08-17 at 19:20 +0200, [email protected] >>>>>> >>>>>> 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?
I can't achieve the same with xset :) but this solution is working very well, this is a really important project showing the power of opensource :) L:

