]> pd.if.org Git - pd_readline/blobdiff - pdmenu3.c
Getting close to a basic working readline now.
[pd_readline] / pdmenu3.c
diff --git a/pdmenu3.c b/pdmenu3.c
deleted file mode 100644 (file)
index 6da1936..0000000
--- a/pdmenu3.c
+++ /dev/null
@@ -1,186 +0,0 @@
-\r
-\r
-/*  pdmenu.c                                                */  \r
-/*  This code is aimed at helping those who would like to   */ \r
-/*  create menus without using the curses library.          */ \r
-/*  It creates a count variable (which could be used to     */ \r
-/*  keep track of which item is highlighted). Using the     */ \r
-/*  up and down arrow keys increments and decrements the    */ \r
-/*  count variable. Finally, when you press Enter, the      */ \r
-/*  value of the count variable is printed and the program  */ \r
-/*  exits.                                                  */       \r
-/*  This code is released to the public domain.             */ \r
-/*  "Share and enjoy...."  ;)                               */  \r
-\r
-\r
-#include <string.h>   \r
-#include <stdio.h> \r
-#include <termios.h>  /* For getch()  */  \r
-\r
-/* This implementation of getch() is from here - */ \r
-/* http://wesley.vidiqatch.org/                  */ \r
-/* Thanks, Wesley!                               */  \r
-static struct termios old, new;\r
-\r
-/* Initialize new terminal i/o settings */\r
-void initTermios(int echo) {\r
-    tcgetattr(0, &old); /* grab old terminal i/o settings */\r
-    new = old; /* make new settings same as old settings */\r
-    new.c_lflag &= ~ICANON; /* disable buffered i/o */\r
-    new.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */\r
-    tcsetattr(0, TCSANOW, &new); /* use these new terminal i/o settings now */\r
-}\r
-\r
-\r
-/* Restore old terminal i/o settings */\r
-void resetTermios(void) {\r
-    tcsetattr(0, TCSANOW, &old);\r
-}\r
-\r
-\r
-/* Read 1 character - echo defines echo mode */\r
-char getch_(int echo) {\r
-    char ch;\r
-    initTermios(echo);\r
-    ch = getchar();\r
-    resetTermios();\r
-    return ch;\r
-}\r
-\r
-\r
-/* Read 1 character without echo */\r
-char getch(void) {\r
-    return getch_(0);\r
-}\r
-\r
-\r
-/* Read 1 character with echo */\r
-char getche(void) {\r
-    return getch_(1);\r
-} \r
-\r
-\r
-\r
-/*  Helper function, to let us see if a .history file */ \r
-/*  exists in the current directory.  */ \r
-int fexists(char *fname)\r
-{  \r
-\r
-   FILE *fptr ;        \r
-       \r
-   fptr = fopen(fname, "r") ;  \r
-   \r
-   if ( !fptr )  return -1 ;  /* File does not exist in dir. */        \r
-        \r
-   fclose(fptr);  \r
-   return 0;    /* File DOES exist in dir.  */         \r
-\r
-} \r
-\r
-\r
- /* Struct to store key sequences */ \r
-typedef struct { \r
-          int fnkey; \r
-          int ctrl; \r
-          int alt ; \r
-       int shf ; \r
-       int esc ; \r
-       int lbr ;  /* For left-bracket ([) of escape sequences */ \r
-       int key; \r
-   } keyseq ;         \r
-\r
-\r
-\r
-\r
-\r
-int main(void)\r
-{\r
-       \r
-  printf("Public Domain Menu Program \n");              \r
\r
-    \r
-  keyseq myseq;      \r
-       \r
-  \r
-  /* Buffer */  \r
-  keyseq buffer[80] ;   \r
-  \r
-  /* Buffer "pointer"  */ \r
-  int bufpnt = 0; \r
-  \r
-  \r
-  /* Test for existence of history file. */  \r
-  int exists;  \r
-  exists = fexists(".history"); \r
-  printf("Result: %d \n", exists);  \r
-  \r
-  while(1) \r
-    {  \r
-                   \r
-      int key = getch(); \r
-       \r
-      /* Printable chars. */  \r
-      if ( (key >= 32)  && (key <= 126) ) \r
-      { \r
-               myseq.key = key;   \r
-        buffer[bufpnt] = myseq;  \r
-        bufpnt += 1; \r
-      }  \r
-                                                                       \r
-      /* Up arrow is 27, 91, 65.    ( ESC [ A )   */   \r
-      /* Down arrow is 27, 91, 66.  ( ESC [ B )   */ \r
-      /* Right arrow is 27, 91, 67. ( ESC [ C )   */ \r
-      /* Left arrow is 27, 91, 68.  ( ESC [ D )   */    \r
-      /* Function keys.     */ \r
-      /* F2 is 27, 79, 81.  */  \r
-      /* F3 is 27, 79, 82.  */  \r
-      /* F4 is 27, 79, 83.  */  \r
-           \r
-                \r
-      else if(key == 27)        \r
-          {  \r
-                         myseq.key = key; \r
-                         buffer[bufpnt] = myseq; \r
-                         bufpnt += 1; \r
-                         key = getch(); \r
-              if(key == 91) \r
-              myseq.key = key; \r
-              buffer[bufpnt] = myseq;  \r
-              bufpnt += 1;                                     \r
-              key = getch(); \r
-              if( (key >= 65) && (key <= 68) )  \r
-               { \r
-                                myseq.key = key;   \r
-                                buffer[bufpnt] = myseq;  \r
-                 bufpnt += 1;  \r
-               }                                 \r
-          }\r
-              \r
-                                          \r
-                                                 \r
-    /* The Enter key exits. Enter is 10 decimal */       \r
-        else if(key == 10)  \r
-               { \r
-                        int j ; \r
-                  /* Print the array of structs. */ \r
-                    for (j=0; j<10; j++)       \r
-                    { \r
-                           printf("Fnkey: %d ", buffer[j].fnkey  ) ; \r
-                           printf("Ctrl:  %d ", buffer[j].ctrl   ) ;   \r
-                           printf("Alt:   %d ", buffer[j].alt    ) ; \r
-                           printf("Shf:   %d ", buffer[j].shf    ) ; \r
-                           printf("Esc:   %d ", buffer[j].esc    ) ; \r
-                           printf("Lbr:   %d ", buffer[j].lbr    ) ;  \r
-                   printf("Key:   %d \n", buffer[j].key  ) ; \r
-                }                      \r
-                                         \r
-             break;           \r
-         }  /* Key = Enter */   \r
-    }                \r
-                                      \r
-       return 0;\r
-}  \r
-\r
-\r
-\r
-\r