スキップしてメイン コンテンツに移動

投稿

2月, 2018の投稿を表示しています

libX11のキー入力検出時の「¥」と「バックスラッシュ」の判別について

MSXエミュのfMSX2をビルドして自分の環境に摺り合わせてる時に、キー入力の諸々で引っかかって、日本語キーボードでのキー表記と実際の入力される文字との差異が若干あったのを修正している時に、¥記号とバックスラッシュ記号がキー入力で判別されないためどちらか利用頻度の少ないキーを間接入力か何がしかの手でやるようにして諦めろ的な記述が見られたのだが、確かに「xev」とかで見ると「¥」も「バックスラッシュ」も同じ「0x5c」を返してくる。でもGNOMEなりMATEなりのデスクトップ環境ではきちんと「¥」キーは「¥」を表示するし、「\」も同様に「\」が出る。と言うことは、何らかの識別の手段があるはずと思い試しにやってみた。 まず、簡単なキー入力表示プログラムを組んでみる。と言っても「http://www43.atpages.jp/opicon69/xlib/key02.html」 のサンプルプログラムを参照してチョコチョコっと改変してるだ けですがね。 以下参照分ーーーーーーーーーーーーーーーーーーーーーーーー #include <x11 lib.h> #include <X11/Xutil.h> #include <X11/keysym.h> #include <X11/XKBlib.h> //XKeycodeToKeysymの代わりにXkbKeycodeToKeysymを使うため #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){         Display *display;         Window window;         XEvent event;         GC gc;         char str[256] = {0};         KeySym keysym;         int quit_flag = 0; /* Xサーバに接続 */         display = XOpenDisplay(NULL); /* ウィンドウを生成 */         window = XCreateSimpleWin