Noob here, but just wondering, would it be hard for you to have the program
instead of insert the text for you, copy it to your clipboard? It would add
a step, but then you could do something like  [<activate script>, ctrl-v] to
paste into whatever window you're in. Some keyboards like logitech's g15
allow special binding to macro keys I believe, so you may have something
like that to use, or even some sort of free macro program to run your python
program, which copies your special timestamp to the clipboard. Or even just
throw it in your launcher
or quick-launch bar, click it, then paste wherever.

On 8/21/07, Alan Gauld <[EMAIL PROTECTED]> wrote:
>
> <[EMAIL PROTECTED]> wrote
>
> > (Windows or Linux) to recognize that every time I type, say,
> > <Ctrl>-'C' '1',
> > a Python script I wrote will execute and out will pop the current
> > date time
>
> Ctrl-C is a particularly difficult combination since in many OS it
> is the system interrupt but if you went for a somewhat less
> controversial
> choice like Ctrl-T say, then it becomes a little bit easier to
> achieve.
>
> > in my desired format.  I want this to happen not just in my Xemacs
> > text
> > editor buffer, but inside a textfield for, say, the Gmail
> > application in
> > Mozilla, in Python IDLE, in the Google desktop search bar and at the
> > command
> > line.
>
> This is truly difficult since each application has its own mechanism
> for
> grabbing keystrokes. Xemacs indeed has two mechanisms, one for
> console mode and one for GUI mode! The GUI has its own key
> handling events (but subverts system combinations like Ctrl-C as
> mentioned above) and the OS command line is the hardest of all unless
> you restrict it to a GUI console window in which case you can catch
> it at the GUI level. Alternatively you can write your own shell!
>
> Catching the keypresses at a global level in a GUI is possible but you
> then have the problem of identifying the original target widget and
> manipulating that after running your python code. You also need to
> post on the original keystroke since the target application might
> use it for something else!
>
> > *) the Apple OS is ideally suited to doing what you want, and
> > necessitates
> > learning AppleScript.
>
> True.
>
> > In Windows or Linux it's a lot more complicated to
> > bind a sequence of keys to call a Python program that generates
> > output in
> > any graphical window
>
> Linux largely depends on the GUI in use. Most sit on top of X and
> could
> be manipulated at that level but it involves very low level coding in
> C.
>
> Windows is not too difficult to catch the keystrokes and execute a
> python script (use WinExec() ) but getting the result back into your
> target application will be tricky, probably involving use of a lot of
> PostMessage events.
>
> > and, in fact, it may be impossible or more trouble than
> > it's worth
>
> Certainly difficult and very open to a trial and error approach and
> even
> then could result in some spectacularly unpredictable behaviour that
> could seriously damage your applications/data! Basically you are
> trying
> to change the OS behaviour. Its the OS job to detect key presses and
> direct them to their destination, to change that you have to interact
> at a fundamental level with the OS keyhandling.
>
> > Have any of you ever successfully engineered an operating system
> > key-binding
>
> Yes, done this in VB and C++
>
> > that calls a Python script and directs the output where the cursor
> > is in any
> > graphical window in Windows and Linux ?
>
> I've separately routed characters to another window in Windoze using
> VB.
>
> > I guess my expectation should be the answer is no, in which case I'd
> > be
> > happy just to find out if it's possible to create key-bindings in
> > Xemacs to
> > call a Python program.
>
> Calling Python is easy because there are standard emacs functions for
> executing a shell command (which includes python) and for scraping
> the output into a text buffer and pasting that wherever you want. But
> it
> will involve some elisp.
>
> But most of what you want is not possible in pure python (except
> possibly in Windows)  it will require a fair bit of coding in C,
> elisp,
> Applescript etc as well
>
> > well, in which case my next step is to port the following to elisp:
> >
> > def output_current_datetime_in_my_desired_format():
> >       import datetime
> >       print datetime.datetime.now().strftime("%d%b%Y%a
> > %I:%M%p").upper()
>
> Frankly, for emacs, that would be the easiest since the elisp required
> to call your Python is almost certainly harder than the elisp to print
> some formated date/time stuff!
>
> And every emacs user should know the basics of elisp, without it
> you are losing a large part of the power of emacs!
>
> HTH,
>
> --
> Alan Gauld
> Author of the Learn to Program web site
> http://www.freenetpages.co.uk/hp/alan.gauld
>
>
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to