Display Curses Keys Responds to curses keys and mouse events, displaying the key code and description.
584 {
586 int c = -1;
588 uint key_id = 0;
590 while (!c) {
591 kstr[0] = '\0';
593 do {
600 exit(EXIT_FAILURE);
601 continue;
602 }
603 } while (c == -1);
604 switch (c) {
605 case NCKEY_INVALID:
606 strcpy(kstr, "NCKEY_INVALID");
607 break;
608 case NCKEY_RESIZE:
609 strcpy(kstr, "NCKEY_RESIZE");
610 break;
611 case NCKEY_UP:
612 strcpy(kstr, "NCKEY_UP");
613 break;
614 case NCKEY_RIGHT:
615 strcpy(kstr, "NCKEY_RIGHT");
616 break;
617 case NCKEY_DOWN:
618 strcpy(kstr, "NCKEY_DOWN");
619 break;
620 case NCKEY_LEFT:
621 strcpy(kstr, "NCKEY_LEFT");
622 break;
623 case NCKEY_INS:
624 strcpy(kstr, "NCKEY_INS");
625 break;
626 case NCKEY_DEL:
627 strcpy(kstr, "NCKEY_DEL");
628 break;
629 case NCKEY_BACKSPACE:
630 strcpy(kstr, "NCKEY_BACKSPACE");
631 break;
632 case NCKEY_PGDOWN:
633 strcpy(kstr, "NCKEY_PGDOWN");
634 break;
635 case NCKEY_PGUP:
636 strcpy(kstr, "NCKEY_PGUP");
637 break;
638 case NCKEY_HOME:
639 strcpy(kstr, "NCKEY_HOME");
640 break;
641 case NCKEY_END:
642 strcpy(kstr, "NCKEY_END");
643 break;
644 case NCKEY_F00:
645 strcpy(kstr, "NCKEY_F00");
646 break;
647 case NCKEY_F01:
648 strcpy(kstr, "NCKEY_F01");
649 break;
650 case NCKEY_F02:
651 strcpy(kstr, "NCKEY_F02");
652 break;
653 case NCKEY_F03:
654 strcpy(kstr, "NCKEY_F03");
655 break;
656 case NCKEY_F04:
657 strcpy(kstr, "NCKEY_F04");
658 break;
659 case NCKEY_F05:
660 strcpy(kstr, "NCKEY_F05");
661 break;
662 case NCKEY_F06:
663 strcpy(kstr, "NCKEY_F06");
664 break;
665 case NCKEY_F07:
666 strcpy(kstr, "NCKEY_F07");
667 break;
668 case NCKEY_F08:
669 strcpy(kstr, "NCKEY_F08");
670 break;
671 case NCKEY_F09:
672 strcpy(kstr, "NCKEY_F09");
673 break;
674 case NCKEY_F10:
675 strcpy(kstr, "NCKEY_F10");
676 break;
677 case NCKEY_F11:
678 strcpy(kstr, "NCKEY_F11");
679 break;
680 case NCKEY_F12:
681 strcpy(kstr, "NCKEY_F12");
682 break;
683 case NCKEY_F13:
684 strcpy(kstr, "NCKEY_F13");
685 break;
686 case NCKEY_F14:
687 strcpy(kstr, "NCKEY_F14");
688 break;
689 case NCKEY_F15:
690 strcpy(kstr, "NCKEY_F15");
691 break;
692 case NCKEY_F16:
693 strcpy(kstr, "NCKEY_F16");
694 break;
695 case NCKEY_F17:
696 strcpy(kstr, "NCKEY_F17");
697 break;
698 case NCKEY_F18:
699 strcpy(kstr, "NCKEY_F18");
700 break;
701 case NCKEY_F19:
702 strcpy(kstr, "NCKEY_F19");
703 break;
704 case NCKEY_F20:
705 strcpy(kstr, "NCKEY_F20");
706 break;
707 case NCKEY_F21:
708 strcpy(kstr, "NCKEY_F21");
709 break;
710 case NCKEY_F22:
711 strcpy(kstr, "NCKEY_F22");
712 break;
713 case NCKEY_F23:
714 strcpy(kstr, "NCKEY_F23");
715 break;
716 case NCKEY_F24:
717 strcpy(kstr, "NCKEY_F24");
718 break;
719 case NCKEY_F25:
720 strcpy(kstr, "NCKEY_F25");
721 break;
722 case NCKEY_F26:
723 strcpy(kstr, "NCKEY_F26");
724 break;
725 case NCKEY_F27:
726 strcpy(kstr, "NCKEY_F27");
727 break;
728 case NCKEY_F28:
729 strcpy(kstr, "NCKEY_F28");
730 break;
731 case NCKEY_F29:
732 strcpy(kstr, "NCKEY_F29");
733 break;
734 case NCKEY_F30:
735 strcpy(kstr, "NCKEY_F30");
736 break;
737 case NCKEY_F31:
738 strcpy(kstr, "NCKEY_F31");
739 break;
740 case NCKEY_F32:
741 strcpy(kstr, "NCKEY_F32");
742 break;
743 case NCKEY_F33:
744 strcpy(kstr, "NCKEY_F33");
745 break;
746 case NCKEY_F34:
747 strcpy(kstr, "NCKEY_F34");
748 break;
749 case NCKEY_F35:
750 strcpy(kstr, "NCKEY_F35");
751 break;
752 case NCKEY_F36:
753 strcpy(kstr, "NCKEY_F36");
754 break;
755 case NCKEY_F37:
756 strcpy(kstr, "NCKEY_F37");
757 break;
758 case NCKEY_F38:
759 strcpy(kstr, "NCKEY_F38");
760 break;
761 case NCKEY_F39:
762 strcpy(kstr, "NCKEY_F39");
763 break;
764 case NCKEY_F40:
765 strcpy(kstr, "NCKEY_F40");
766 break;
767 case NCKEY_F41:
768 strcpy(kstr, "NCKEY_F41");
769 break;
770 case NCKEY_F42:
771 strcpy(kstr, "NCKEY_F42");
772 break;
773 case NCKEY_F43:
774 strcpy(kstr, "NCKEY_F43");
775 break;
776 case NCKEY_F44:
777 strcpy(kstr, "NCKEY_F44");
778 break;
779 case NCKEY_F45:
780 strcpy(kstr, "NCKEY_F45");
781 break;
782 case NCKEY_F46:
783 strcpy(kstr, "NCKEY_F46");
784 break;
785 case NCKEY_F47:
786 strcpy(kstr, "NCKEY_F47");
787 break;
788 case NCKEY_F48:
789 strcpy(kstr, "NCKEY_F48");
790 break;
791 case NCKEY_F49:
792 strcpy(kstr, "NCKEY_F49");
793 break;
794 case NCKEY_F50:
795 strcpy(kstr, "NCKEY_F50");
796 break;
797 case NCKEY_F51:
798 strcpy(kstr, "NCKEY_F51");
799 break;
800 case NCKEY_F52:
801 strcpy(kstr, "NCKEY_F52");
802 break;
803 case NCKEY_F53:
804 strcpy(kstr, "NCKEY_F53");
805 break;
806 case NCKEY_F54:
807 strcpy(kstr, "NCKEY_F54");
808 break;
809 case NCKEY_F55:
810 strcpy(kstr, "NCKEY_F55");
811 break;
812 case NCKEY_F56:
813 strcpy(kstr, "NCKEY_F56");
814 break;
815 case NCKEY_F57:
816 strcpy(kstr, "NCKEY_F57");
817 break;
818 case NCKEY_F58:
819 strcpy(kstr, "NCKEY_F58");
820 break;
821 case NCKEY_F59:
822 strcpy(kstr, "NCKEY_F59");
823 break;
824 case NCKEY_F60:
825 strcpy(kstr, "NCKEY_F60");
826 break;
827 case NCKEY_ENTER:
828 strcpy(kstr, "NCKEY_ENTER");
829 break;
830 case NCKEY_CLS:
831 strcpy(kstr, "NCKEY_CLS");
832 break;
833 case NCKEY_DLEFT:
834 strcpy(kstr, "NCKEY_DLEFT");
835 break;
836 case NCKEY_DRIGHT:
837 strcpy(kstr, "NCKEY_DRIGHT");
838 break;
839 case NCKEY_ULEFT:
840 strcpy(kstr, "NCKEY_ULEFT");
841 break;
842 case NCKEY_URIGHT:
843 strcpy(kstr, "NCKEY_URIGHT");
844 break;
845 case NCKEY_CENTER:
846 strcpy(kstr, "NCKEY_CENTER");
847 break;
848 case NCKEY_BEGIN:
849 strcpy(kstr, "NCKEY_BEGIN");
850 break;
851 case NCKEY_CANCEL:
852 strcpy(kstr, "NCKEY_CANCEL");
853 break;
854 case NCKEY_CLOSE:
855 strcpy(kstr, "NCKEY_CLOSE");
856 break;
857 case NCKEY_COMMAND:
858 strcpy(kstr, "NCKEY_COMMAND");
859 break;
860 case NCKEY_COPY:
861 strcpy(kstr, "NCKEY_COPY");
862 break;
863 case NCKEY_EXIT:
864 strcpy(kstr, "NCKEY_EXIT");
865 break;
866 case NCKEY_PRINT:
867 strcpy(kstr, "NCKEY_PRINT");
868 break;
869 case NCKEY_REFRESH:
870 strcpy(kstr, "NCKEY_REFRESH");
871 break;
872 case NCKEY_SEPARATOR:
873 strcpy(kstr, "NCKEY_SEPARATOR");
874 break;
875 case NCKEY_CAPS_LOCK:
876 strcpy(kstr, "NCKEY_CAPS_LOCK");
877 break;
878 case NCKEY_SCROLL_LOCK:
879 strcpy(kstr, "NCKEY_SCROLL_LOCK");
880 break;
881 case NCKEY_NUM_LOCK:
882 strcpy(kstr, "NCKEY_NUM_LOCK");
883 break;
884 case NCKEY_PRINT_SCREEN:
885 strcpy(kstr, "NCKEY_PRINT_SCREEN");
886 break;
887 case NCKEY_PAUSE:
888 strcpy(kstr, "NCKEY_PAUSE");
889 break;
890 case NCKEY_MENU:
891 strcpy(kstr, "NCKEY_MENU");
892 break;
893 case NCKEY_MEDIA_PLAY:
894 strcpy(kstr, "NCKEY_MEDIA_PLAY");
895 break;
896 case NCKEY_MEDIA_PAUSE:
897 strcpy(kstr, "NCKEY_MEDIA_PAUSE");
898 break;
899 case NCKEY_MEDIA_PPAUSE:
900 strcpy(kstr, "NCKEY_MEDIA_PPAUSE");
901 break;
902 case NCKEY_MEDIA_REV:
903 strcpy(kstr, "NCKEY_MEDIA_REV");
904 break;
905 case NCKEY_MEDIA_STOP:
906 strcpy(kstr, "NCKEY_MEDIA_STOP");
907 break;
908 case NCKEY_MEDIA_FF:
909 strcpy(kstr, "NCKEY_MEDIA_FF");
910 break;
911 case NCKEY_MEDIA_REWIND:
912 strcpy(kstr, "NCKEY_MEDIA_REWIND");
913 break;
914 case NCKEY_MEDIA_NEXT:
915 strcpy(kstr, "NCKEY_MEDIA_NEXT");
916 break;
917 case NCKEY_MEDIA_PREV:
918 strcpy(kstr, "NCKEY_MEDIA_PREV");
919 break;
920 case NCKEY_MEDIA_RECORD:
921 strcpy(kstr, "NCKEY_MEDIA_RECORD");
922 break;
923 case NCKEY_MEDIA_LVOL:
924 strcpy(kstr, "NCKEY_MEDIA_LVOL");
925 break;
926 case NCKEY_MEDIA_RVOL:
927 strcpy(kstr, "NCKEY_MEDIA_RVOL");
928 break;
929 case NCKEY_MEDIA_MUTE:
930 strcpy(kstr, "NCKEY_MEDIA_MUTE");
931 break;
932 case NCKEY_LSHIFT:
933 strcpy(kstr, "NCKEY_LSHIFT");
934 break;
935 case NCKEY_LCTRL:
936 strcpy(kstr, "NCKEY_LCTRL");
937 break;
938 case NCKEY_LALT:
939 strcpy(kstr, "NCKEY_LALT");
940 break;
941 case NCKEY_LSUPER:
942 strcpy(kstr, "NCKEY_LSUPER");
943 break;
944 case NCKEY_LHYPER:
945 strcpy(kstr, "NCKEY_LHYPER");
946 break;
947 case NCKEY_LMETA:
948 strcpy(kstr, "NCKEY_LMETA");
949 break;
950 case NCKEY_RSHIFT:
951 strcpy(kstr, "NCKEY_RSHIFT");
952 break;
953 case NCKEY_RCTRL:
954 strcpy(kstr, "NCKEY_RCTRL");
955 break;
956 case NCKEY_RALT:
957 strcpy(kstr, "NCKEY_RALT");
958 break;
959 case NCKEY_RSUPER:
960 strcpy(kstr, "NCKEY_RSUPER");
961 break;
962 case NCKEY_RHYPER:
963 strcpy(kstr, "NCKEY_RHYPER");
964 break;
965 case NCKEY_RMETA:
966 strcpy(kstr, "NCKEY_RMETA");
967 break;
968 case NCKEY_L3SHIFT:
969 strcpy(kstr, "NCKEY_L3SHIFT");
970 break;
971 case NCKEY_L5SHIFT:
972 strcpy(kstr, "NCKEY_L5SHIFT");
973 break;
974 case NCKEY_MOTION:
975 strcpy(kstr, "NCKEY_MOTION");
976 break;
977 case NCKEY_BUTTON1:
978 strcpy(kstr, "NCKEY_BUTTON1");
979 break;
980 case NCKEY_BUTTON2:
981 strcpy(kstr, "NCKEY_BUTTON2");
982 break;
983 case NCKEY_BUTTON3:
984 strcpy(kstr, "NCKEY_BUTTON3");
985 break;
986 case NCKEY_BUTTON4:
987 strcpy(kstr, "NCKEY_BUTTON4");
988 break;
989 case NCKEY_BUTTON5:
990 strcpy(kstr, "NCKEY_BUTTON5");
991 break;
992 case NCKEY_BUTTON6:
993 strcpy(kstr, "NCKEY_BUTTON6");
994 break;
995 case NCKEY_BUTTON7:
996 strcpy(kstr, "NCKEY_BUTTON7");
997 break;
998 case NCKEY_BUTTON8:
999 strcpy(kstr, "NCKEY_BUTTON8");
1000 break;
1001 case NCKEY_BUTTON9:
1002 strcpy(kstr, "NCKEY_BUTTON9");
1003 break;
1004 case NCKEY_BUTTON10:
1005 strcpy(kstr, "NCKEY_BUTTON10");
1006 break;
1007 case NCKEY_BUTTON11:
1008 strcpy(kstr, "NCKEY_BUTTON11");
1009 break;
1010 case NCKEY_SIGNAL:
1011 strcpy(kstr, "NCKEY_SIGNAL");
1012 break;
1013 case NCKEY_EOF:
1014 strcpy(kstr, "NCKEY_EOF");
1015 break;
1016 default:
1017 snprintf(kstr, 32, "NCKEY_%d", key_id);
1018 break;
1019 }
1025 sprintf(tmp, " Inside Win: y: %3d, x: %3d",
1027 } else {
1028 sprintf(tmp, " stdwin: y: %3d, x: %3d",
1030 }
1038 sprintf(tmp, " Octal: %3o", c);
1041
1042 sprintf(tmp, " Decimal: %3d", c);
1045
1046 sprintf(tmp, " Hex: %3x", c);
1049
1050 if (kstr[0]) {
1051 sprintf(tmp, "Description: %s", kstr);
1052 } else {
1053 sprintf(tmp, " ASCII: %c", c);
1054 }
1058 }
1060 usleep(100000);
1061 break;
1062 }
1063 c = '\0';
1064 }
1065#endif
1066 return 0;
1067}
volatile sig_atomic_t sig_received
bool handle_signal(sig_atomic_t)
int ui_cursor_move(UiSurface *s, uint w, uint y, uint x)
int ui_mvwaddstr(UiSurface *s, uint w, uint y, uint x, const char *text)
int ui_get_event(UiSurface *s, uint w, UiEvent *ev, int timeout_ms)
Wait for an input event on target (or stdscr if NULL).
int ui_wclrtoeol(UiSurface *s, uint w)
int display_error(char *msg0, char *msg1, char *msg2, char *msg3)
Display an error message window or print to stderr.