google-chinese-handwriting-ime icon indicating copy to clipboard operation
google-chinese-handwriting-ime copied to clipboard

Unable to paste written words to any program

Open luisiuman1998519 opened this issue 5 years ago • 7 comments

Just newly installed Debian 10 and as soon as possible tried to install the Google-Chinese Writing-ime. The program shows up OK, and can recognize my handwriting, but it seems unable to paste any words I had written in it to any program, like firefox, libreoffice.

In config.js , I alter the line use_clipboard: true

I am using Debian 10 with GNOME 3.30.2

Screenshot from 2019-08-08 01-44-47 Screenshot from 2019-08-08 01-45-05

When the focus is on the program, the words just disappear after I pressed the blue button or press Enter on the keyboard. Not sure where the words go.

luisiuman1998519 avatar Aug 07 '19 17:08 luisiuman1998519

Does use_clipboard: false work for you?

Saren-Arterius avatar Aug 09 '19 06:08 Saren-Arterius

No, i switched to true because that didn't work

Do you guys have additional setting or packages installed? The IME has to have focus on it for the blue paste button or my keyboard Enter to respond, and the textbox in my browser firefox will lose its cursor and seems unable for me to type or paste any words

luisiuman1998519 avatar Aug 09 '19 07:08 luisiuman1998519

A workaround: Copying translation to clipboard and paste it. I can sort of use the program :) I don't think one is intended to use it this way?

Screenshot from 2019-08-09 16-12-22 Screenshot from 2019-08-09 16-12-42

luisiuman1998519 avatar Aug 09 '19 08:08 luisiuman1998519

Will look into this issue for once and for all, if I have time.

Saren-Arterius avatar Aug 12 '19 14:08 Saren-Arterius

Hello, did you by any chance have time to look into this issue?

eddstng avatar May 26 '22 05:05 eddstng

Hi. I don't think this program would work anymore since Google likes to break things very much and unfortunately this program relies on it. Also with the rise of wayland, the touchpad input grabbing and copy-pasting would never work the same way at least without sudo.

However sending ctrl+v by writing into device fd works very well. I have a similar simple input method project using that.

#include <fcntl.h>
#include <linux/input.h>
#include <stdio.h>
#include <unistd.h>

#define EV_PRESSED 1
#define EV_RELEASED 0
#define EV_REPEAT 2

/*
 * Purpose: Stuffs the Linux keyboard buffer with a key and
 * reads it back out of the buffer.
 * All key definitions can be found in input.h file:
 * /usr/src/linux-headers-3.2.0-23/include/linux
 *
 */

int fd = 0;
// char *device = "/dev/input/event4";
char *device = "/dev/input/by-path/platform-i8042-serio-0-event-kbd";

void send_backspace() {
  if ((fd = open(device, O_RDWR)) > 0) {
    struct input_event event;

    // Press a key (stuff the keyboard with a keypress)
    event.type = EV_KEY;
    event.value = EV_PRESSED;
    event.code = KEY_BACKSPACE;
    write(fd, &event, sizeof(struct input_event));

    // Release the key
    event.value = EV_RELEASED;
    event.code = KEY_BACKSPACE;
    write(fd, &event, sizeof(struct input_event));
    close(fd);
  }
}

void send_ctrl_v() {
  if ((fd = open(device, O_RDWR)) > 0) {
    struct input_event event;

    // Press a key (stuff the keyboard with a keypress)
    event.type = EV_KEY;
    event.value = EV_PRESSED;
    event.code = KEY_LEFTCTRL;
    write(fd, &event, sizeof(struct input_event));

    event.type = EV_KEY;
    event.value = EV_PRESSED;
    event.code = KEY_V;
    write(fd, &event, sizeof(struct input_event));

    // Release the key
    event.value = EV_RELEASED;
    event.code = KEY_V;
    write(fd, &event, sizeof(struct input_event));

    // Release the key
    event.value = EV_RELEASED;
    event.code = KEY_LEFTCTRL;
    write(fd, &event, sizeof(struct input_event));
    close(fd);
  }
}

For this project I don't know if I can ever make it work again.

Saren-Arterius avatar May 26 '22 06:05 Saren-Arterius

Thank you for your efforts. I look forward to your future projects.

eddstng avatar May 26 '22 06:05 eddstng