Skip to content
Snippets Groups Projects
Select Git revision
  • af43cd033c64384c521a9cb1fb68660d7799435c
  • master default protected
  • android-7.1.2_r28_klist
  • oreo-mr1-iot-release
  • sdk-release
  • pie-cts-dev
  • pie-cts-release
  • pie-vts-release
  • nougat-iot-release
  • pie-gsi
  • pie-platform-release
  • pie-r2-release
  • pie-r2-s1-release
  • pie-release
  • pie-dev
  • oreo-m4-s4-release
  • o-mr1-iot-preview-8
  • oreo-m2-s2-release
  • oreo-m2-s1-release
  • oreo-m6-s2-release
  • oreo-m6-s3-release
  • android-o-mr1-iot-release-1.0.4
  • android-9.0.0_r8
  • android-9.0.0_r7
  • android-9.0.0_r6
  • android-9.0.0_r5
  • android-8.1.0_r46
  • android-8.1.0_r45
  • android-n-iot-release-smart-display-r2
  • android-vts-8.1_r5
  • android-cts-8.1_r8
  • android-cts-8.0_r12
  • android-cts-7.1_r20
  • android-cts-7.0_r24
  • android-cts-6.0_r31
  • android-o-mr1-iot-release-1.0.3
  • android-cts-9.0_r1
  • android-8.1.0_r43
  • android-8.1.0_r42
  • android-n-iot-release-smart-display
  • android-p-preview-5
41 results

setkey.c

Blame
  • user avatar
    The Android Open Source Project authored
    dd7bc331
    History
    setkey.c 2.26 KiB
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <string.h>
    #include <linux/kd.h>
    #include <linux/vt.h>
    #include <errno.h>
    
    static void setkey_usage(char *argv[])
    {
        fprintf(stderr, "%s [-t <table>] [-k <index>] [-v value] [-r] [-h]\n"
                "  -t <table> Select table\n"
                "  -k <index> Select key\n"
                "  -v <value> Set entry\n"
                "  -r         Read current entry\n"
                "  -h         Print help\n", argv[0]);
    }
    
    #define TTYDEV	"/dev/tty0"
    
    int setkey_main(int argc, char *argv[])
    {
        int fd;
        struct kbentry kbe;
        int did_something = 0;
    
        kbe.kb_table = 0;
        kbe.kb_index = -1;
        kbe.kb_value = 0;
    
        fd = open(TTYDEV, O_RDWR | O_SYNC);
        if (fd < 0) {
            fprintf(stderr, "open %s: %s\n", TTYDEV, strerror(errno));
            return 1;
        }
    
        do {
            int c, ret;
    
            c = getopt(argc, argv, "t:k:v:hr");
            if (c == EOF)
                break;
    
            switch (c) {
            case 't':
                kbe.kb_table = strtol(optarg, NULL, 0);
                break;
            case 'k':
                kbe.kb_index = strtol(optarg, NULL, 0);
                break;
            case 'v':
                kbe.kb_value = strtol(optarg, NULL, 0);
                ret = ioctl(fd, KDSKBENT, &kbe);
                if (ret < 0) {
                    fprintf(stderr, "KDSKBENT %d %d %d failed: %s\n",
                            kbe.kb_table, kbe.kb_index, kbe.kb_value,
                            strerror(errno));
                    return 1;
                }
                did_something = 1;
                break;
            case 'r':
                ret = ioctl(fd, KDGKBENT, &kbe);
                if (ret < 0) {
                    fprintf(stderr, "KDGKBENT %d %d  failed: %s\n",
                            kbe.kb_table, kbe.kb_index, strerror(errno));
                    return 1;
                }
                printf("0x%x 0x%x 0x%x\n",
                       kbe.kb_table, kbe.kb_index, kbe.kb_value);
                did_something = 1;
                break;
            case 'h':
                setkey_usage(argv);
                return 1;
            case '?':
                fprintf(stderr, "%s: invalid option -%c\n",
                    argv[0], optopt);
                return 1;
            }
        } while (1);
    
        if(optind != argc || !did_something) {
            setkey_usage(argv);
            return 1;
        }
    
        return 0;
    }