[Pythonmac-SIG] Fwd: more OS X oddities
Nicholas Cole
nicholas.cole at gmail.com
Sat Apr 15 21:05:07 CEST 2006
I realised that on OS X it is almost impossible (or at least I can't
find a way) to capture F-key or meta-key presses using the python
curses module. The following email has some code which illustrates
the problem (it reports key-presses in 3 different ways). For some
reason I don't understand it works on Linux but not OS X. Thomas
Dickey from the bug-ncurses list points out that python may be using
its own functions rather than those from curses itself. At any rate,
this seems to be a mac issue, so I thought I'd point it out here.
Best wishes,
N.
---------- Forwarded message ----------
From: Thomas Dickey <dickey at his.com>
Date: Apr 15, 2006 8:19 PM
Subject: Re: more OS X oddities
To: Nicholas Cole <nicholas.cole at gmail.com>
Cc: bug-ncurses at gnu.org
On Sat, Apr 15, 2006 at 04:20:36PM +0200, Nicholas Cole wrote:
> Why does this code give the name of function keys on linux, but not on
> OS X? I can't work out any way of capturing a function-key press
> (either in X11 or Terminal.app) on OS X.
>
> Best, N.
>
> #!/usr/bin/python
> import curses
> import curses.ascii
>
> def mainloop(scr):
> while 1:
> scr.keypad(1)
> ch = scr.getch()
> try:
> scr.erase()
> scr.addstr(0,0, "%s, %s, %s" %
> (curses.keyname(ch), curses.ascii.unctrl(ch), ch))
Checking a little -
The python package for curses does not use the curses function unctrl(),
and uses this chunk instead:
def unctrl(c):
bits = _ctoi(c)
if bits == 0x7f:
rep = "^?"
elif bits & 0x20:
rep = chr((bits & 0x7f) | 0x20)
else:
rep = "^" + chr(((bits & 0x7f) | 0x20) + 0x20)
if bits & 0x80:
return "!" + rep
return rep
(that accounts for the odd format of the output).
--
Thomas E. Dickey <dickey at invisible-island.net>
http://invisible-island.net
ftp://invisible-island.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFEQTlJcCNT4PfkjtsRArYrAKC/gk25beCJVHfQC/7vkCLjNNbtjACeJsoC
xo+OWVMpY1lq5SyW26yeDiU=
=DcUE
-----END PGP SIGNATURE-----
More information about the Pythonmac-SIG
mailing list