google-chinese-handwriting-ime
google-chinese-handwriting-ime copied to clipboard
Unable to paste written words to any program
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
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.
Does use_clipboard: false
work for you?
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
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?
Will look into this issue for once and for all, if I have time.
Hello, did you by any chance have time to look into this issue?
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.
Thank you for your efforts. I look forward to your future projects.