diff --git a/readchar/__init__.py b/readchar/__init__.py index 8ba31da..b20887a 100644 --- a/readchar/__init__.py +++ b/readchar/__init__.py @@ -6,11 +6,7 @@ from sys import platform -if ( - platform.startswith("linux") - or platform == "darwin" - or platform.startswith("freebsd") -): +if platform.startswith(("linux", "darwin", "freebsd")): from ._posix_read import readchar, readkey from . import _posix_key as key elif platform in ("win32", "cygwin"): diff --git a/readchar/_macos_key.py b/readchar/_macos_key.py new file mode 100644 index 0000000..5e27eb8 --- /dev/null +++ b/readchar/_macos_key.py @@ -0,0 +1,4 @@ +# common + +CR = "\x0d" +ENTER = CR diff --git a/readchar/_posix_read.py b/readchar/_posix_read.py index c34a797..560f679 100644 --- a/readchar/_posix_read.py +++ b/readchar/_posix_read.py @@ -19,7 +19,10 @@ def readchar() -> str: term[3] &= ~(termios.ICANON | termios.ECHO | termios.IGNBRK | termios.BRKINT) termios.tcsetattr(fd, termios.TCSAFLUSH, term) - ch = sys.stdin.read(1) + if sys.platform == "darwin": + ch = sys.stdin.readline(1) + else: + ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch diff --git a/readchar/key.py b/readchar/key.py index 0e83a2a..86913f4 100644 --- a/readchar/key.py +++ b/readchar/key.py @@ -4,12 +4,11 @@ from . import platform -if ( - platform.startswith("linux") - or platform == "darwin" - or platform.startswith("freebsd") -): +if platform.startswith(("linux", "freebsd")): from ._posix_key import * +elif platform.startswith("darwin"): + from ._posix_key import * + from ._macos_key import * elif platform in ("win32", "cygwin"): from ._win_key import * else: