summaryrefslogtreecommitdiffstats
path: root/osdep/getch2-win.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-12-19 21:31:27 +0100
committerwm4 <wm4@nowhere>2013-12-19 21:31:27 +0100
commit25d4ae74f1dbddf99b147df0887d6810d34e36dd (patch)
tree02e0d851e5aa1a70c1e528caec1aeeb6a6620076 /osdep/getch2-win.c
parent8c7ea10873ced7c4e0344d942be4792e9d7a2801 (diff)
downloadmpv-25d4ae74f1dbddf99b147df0887d6810d34e36dd.tar.bz2
mpv-25d4ae74f1dbddf99b147df0887d6810d34e36dd.tar.xz
Rename getch2....c/h to terminal....c/h
"getch2" really tells nothing about what the heck this code does. It'd be even worse when moving the rest of terminal handling code there.
Diffstat (limited to 'osdep/getch2-win.c')
-rw-r--r--osdep/getch2-win.c194
1 files changed, 0 insertions, 194 deletions
diff --git a/osdep/getch2-win.c b/osdep/getch2-win.c
deleted file mode 100644
index 166084d425..0000000000
--- a/osdep/getch2-win.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* Windows TermIO
- *
- * copyright (C) 2003 Sascha Sommer
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-// See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
-// for additional virtual keycodes
-
-
-#include "config.h"
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <windows.h>
-#include "input/keycodes.h"
-#include "input/input.h"
-#include "getch2.h"
-
-int mp_input_slave_cmd_func(int fd, char *dest, int size)
-{
- DWORD retval;
- HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
- if (PeekNamedPipe(in, NULL, size, &retval, NULL, NULL)) {
- if (size > retval)
- size = retval;
- } else {
- if (WaitForSingleObject(in, 0))
- size = 0;
- }
- if (!size)
- return MP_INPUT_NOTHING;
- ReadFile(in, dest, size, &retval, NULL);
- if (retval)
- return retval;
- return MP_INPUT_NOTHING;
-}
-
-int screen_width = 80;
-int screen_height = 24;
-char *erase_to_end_of_line = NULL;
-
-void get_screen_size(void)
-{
- CONSOLE_SCREEN_BUFFER_INFO cinfo;
- if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cinfo)) {
- screen_width = cinfo.dwMaximumWindowSize.X;
- screen_height = cinfo.dwMaximumWindowSize.Y;
- }
-}
-
-int load_termcap(char *termtype)
-{
- return 0;
-}
-
-static HANDLE in;
-static int getch2_status = 0;
-
-static int getch2_internal(void)
-{
- INPUT_RECORD eventbuffer[128];
- DWORD retval;
- int i = 0;
- if (!getch2_status) {
- // supports e.g. MinGW xterm, unfortunately keys are only received after
- // enter was pressed.
- uint8_t c;
- if (!PeekNamedPipe(in, NULL, 1, &retval, NULL, NULL) || !retval)
- return -1;
- ReadFile(in, &c, 1, &retval, NULL);
- return retval == 1 ? c : -1;
- }
- /*check if there are input events*/
- if (!GetNumberOfConsoleInputEvents(in, &retval)) {
- printf("getch2: can't get number of input events: %i\n",
- (int)GetLastError());
- return -1;
- }
- if (retval <= 0)
- return -1;
-
- /*read all events*/
- if (!ReadConsoleInput(in, eventbuffer, 128, &retval)) {
- printf("getch: can't read input events\n");
- return -1;
- }
-
- /*filter out keyevents*/
- for (i = 0; i < retval; i++) {
- switch (eventbuffer[i].EventType) {
- case KEY_EVENT:
- /*only a pressed key is interresting for us*/
- if (eventbuffer[i].Event.KeyEvent.bKeyDown == TRUE) {
- /*check for special keys*/
- switch (eventbuffer[i].Event.KeyEvent.wVirtualKeyCode) {
- case VK_HOME:
- return MP_KEY_HOME;
- case VK_END:
- return MP_KEY_END;
- case VK_DELETE:
- return MP_KEY_DEL;
- case VK_INSERT:
- return MP_KEY_INS;
- case VK_BACK:
- return MP_KEY_BS;
- case VK_PRIOR:
- return MP_KEY_PGUP;
- case VK_NEXT:
- return MP_KEY_PGDWN;
- case VK_RETURN:
- return MP_KEY_ENTER;
- case VK_ESCAPE:
- return MP_KEY_ESC;
- case VK_LEFT:
- return MP_KEY_LEFT;
- case VK_UP:
- return MP_KEY_UP;
- case VK_RIGHT:
- return MP_KEY_RIGHT;
- case VK_DOWN:
- return MP_KEY_DOWN;
- case VK_SHIFT:
- continue;
- }
- /*check for function keys*/
- if (0x87 >= eventbuffer[i].Event.KeyEvent.wVirtualKeyCode &&
- eventbuffer[i].Event.KeyEvent.wVirtualKeyCode >= 0x70)
- return MP_KEY_F + 1 +
- eventbuffer[i].Event.KeyEvent.wVirtualKeyCode - 0x70;
-
- /*only characters should be remaining*/
- //printf("getch2: YOU PRESSED \"%c\" \n",eventbuffer[i].Event.KeyEvent.uChar.AsciiChar);
- return eventbuffer[i].Event.KeyEvent.uChar.AsciiChar;
- }
- break;
-
- case MOUSE_EVENT:
- case WINDOW_BUFFER_SIZE_EVENT:
- case FOCUS_EVENT:
- case MENU_EVENT:
- default:
- //printf("getch2: unsupported event type");
- break;
- }
- }
- return -1;
-}
-
-bool getch2(struct input_ctx *ctx)
-{
- int r = getch2_internal();
- if (r >= 0)
- mp_input_put_key(ctx, r);
- return true;
-}
-
-void getch2_poll(void)
-{
-}
-
-void getch2_enable(void)
-{
- DWORD retval;
- in = GetStdHandle(STD_INPUT_HANDLE);
- if (!GetNumberOfConsoleInputEvents(in, &retval)) {
- printf("getch2: %i can't get number of input events "
- "[disabling console input]\n", (int)GetLastError());
- getch2_status = 0;
- } else
- getch2_status = 1;
-}
-
-void getch2_disable(void)
-{
- if (!getch2_status)
- return; // already disabled / never enabled
- getch2_status = 0;
-}