Received: from mail-ed1-f66.google.com (mail-ed1-f66.google.com [209.85.208.66]) by mail.sr.ht (Postfix) with ESMTPS id E2CD540436 for <~eliasnaur/gio@lists.sr.ht>; Wed, 6 Nov 2019 14:02:37 +0000 (UTC) Authentication-Results: mail.sr.ht; dkim=pass (2048-bit key) header.d=eliasnaur.com header.i=@eliasnaur.com header.b=4rxYhhUM Received: by mail-ed1-f66.google.com with SMTP id k14so10563181eds.4 for <~eliasnaur/gio@lists.sr.ht>; Wed, 06 Nov 2019 06:02:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eliasnaur.com; s=google; h=content-transfer-encoding:in-reply-to:date:to:cc:subject:from :message-id; bh=yiJJF6PZmrs9Xk076p35pp6Zndbtb2EH5JiTm7c5u9E=; b=4rxYhhUMO7J6E4SPKdhz9gWm4gqnteC0sGDrk9kMQyCfpdCbYBZcbTnndUFrwnfrWo YpgINeP2ncuOuSYzSdDQdCYl5kA02MuS2BhkMBtSyW1IF4YLm4hECI1HPbc7b+kkxFP7 mf67dl453DNy8xP6GyMgtXu2OqPT8mpYqsK1Imio0o7PK2rMcohsbe3F7l79eUw8upSi RGJyOGgEATMtFqCgQgSIsdCd2oifOg0FcIZi+ZZsvO71q6+I2c70cyPbyWRXZmkoGiHq j+DaMxA9tlJdsU1FD9Pq+4C+5km+HMZqFdnLk61RuAQui4uoqzUY5J255naEAzbmN5Ap WhuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:content-transfer-encoding:in-reply-to:date:to:cc :subject:from:message-id; bh=yiJJF6PZmrs9Xk076p35pp6Zndbtb2EH5JiTm7c5u9E=; b=O+X0U0A6jcXqKePSNKpFHR9Qig+3b8fjG2XhAzX51r/M3ywsVYeJ88H8cp67Hx106W csNX0hYmz6aYZDEidke7rIBxuObHqYnvlvt3oDGxtsb9qMtlbD0chMC6htTrCSJJ1qFq ZnsW5gAfomKPfcZ21nHchbbYZ1zf3WYZ99+lPEfp0VzRyeIxHSRi9OMF2XQAlCPpth9o Bi4yTZRoqzA9ASJp7Vug+7oeFXTYbrGeywBfukkUd8sacW/vbj/qtxtRrebOaXgwIUa9 vpIueLGlQi59zqEIoYKK8f338Auia7qIxiYJhuc6UXVeK0f9wbBcb++b/OTtiOovmrUE 8bTA== X-Gm-Message-State: APjAAAW9HkTY2bhOJ4umy3VKfTzLoswKlU7k8rG+pT/ucDkVJnUqu4dQ hxhtrqsZUrBjRFmBaan9nRfPwQ== X-Google-Smtp-Source: APXvYqyPMw4ZOXj4YZXoHq1J35phPDzlx+M/Iap7zicUDIGB08W5xhl+IaHLKgd7p2Mc3QGH+cZ71A== X-Received: by 2002:a05:6402:1a4f:: with SMTP id bf15mr2855404edb.160.1573048956873; Wed, 06 Nov 2019 06:02:36 -0800 (PST) Received: from localhost ([145.255.60.245]) by smtp.gmail.com with ESMTPSA id c93sm1173610edf.92.2019.11.06.06.02.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 06 Nov 2019 06:02:35 -0800 (PST) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 In-Reply-To: <20191106133921.24319-1-db047h@gmail.com> Date: Wed, 06 Nov 2019 15:02:35 +0100 To: "Denis Bernard" , <~eliasnaur/gio@lists.sr.ht> Cc: "Denis Bernard" Subject: Re: [PATCH] app/internal/window: Fix keyboard handling on X11 From: "Elias Naur" Message-Id: On Wed Nov 6, 2019 at 2:39 PM Denis Bernard wrote: > --- > app/internal/window/os_x11.go | 62 ++++++++++++++++++++--------------- > 1 file changed, 35 insertions(+), 27 deletions(-) >=20 > diff --git a/app/internal/window/os_x11.go b/app/internal/window/os_x11.g= o > index 2abb1bd..d8d6ceb 100644 > --- a/app/internal/window/os_x11.go > +++ b/app/internal/window/os_x11.go > @@ -408,6 +407,10 @@ func (e *xEvent) getUint(off int) C.uint { > return *(*C.uint)(unsafe.Pointer(uintptr(unsafe.Pointer(e)) + uintptr(o= ff))) > } > =20 > +func (e *xEvent) setUint(off int, v C.uint) { > + *(*C.uint)(unsafe.Pointer(uintptr(unsafe.Pointer(e)) + uintptr(off))) = =3D v I don't like unrestricted pointer arithmetic, even internally, and I'm not = even sure the Go unsafe rules allow it. How about reading out the struct directly: func (e *xEvent) asKeyEvent() *C.XKeyEvent { return (*C.XKeyEvent)(unsafe.Pointer(e))? } In fact, I believe you can get rid of xEvent altogether: var evt *C.XEvent kevt :=3D (*C.XKeyEvent)(unsafe.Pointer(evt) kevt.state &^=3D (C.uint(C.ControlMask) | C.uint(C.ShiftMask)) > +} > + > func (e *xEvent) getUlong(off int) C.ulong { > return *(*C.ulong)(unsafe.Pointer(uintptr(unsafe.Pointer(e)) + uintptr(= off))) Same.