0

これが現在のコード(または少なくとも重要な部分) です。

これらは、コンパイル中に発生する(関連する)エラーです。(スポイラータグに入れればいいのに)

g15_plugin_uinput.c: 関数 'g15_process_keys' 内: g15_plugin_uinput.c:189:3: エラー: 'g_key' が宣言されていません (この関数で最初に使用)

g_key 1 =GKEY_OFFSET+1; ^ g15_plugin_uinput.c:189:3: 注: 宣言されていない各識別子は、g15_plugin_uinput.c:196:24 に表示される関数ごとに 1 回だけ報告されます:

警告: コンマ式の左側のオペランドは効果がありません [-Wunused-value] g_key[7]=KEY_LEFTMETA, KEY_F1;

.....(繰り返し)

.... (繰り返し終了後)

g15_plugin_uinput.c:208:25: 警告: コンマ式の左側のオペランドは効果がありません [-Wunused-value] g_key[18]=KEY_LEFTCTRL, KEY_PAGEDOWN;

g15_plugin_uinput.c:208:3: 警告: 効果のないステートメント [-Wunused-value] g_key[18]=KEY_LEFTCTRL, KEY_PAGEDOWN;

g15_plugin_uinput.c:292:16: エラー: 不明な型名 'key_seq' void g_key_dn(key_seq シーケンス)

g15_plugin_uinput.c:298:16: エラー: 不明な型名 'key_seq' void g_key_up(key_seq シーケンス)

g15_plugin_uinput.c:306:13: 警告: 関数 'g_key_dn' の暗黙の宣言 [-Wimplicit-function-declaration] {g_key_dn(sequences 1 );}

g15_plugin_uinput.c:306:23: エラー: 'sequences' が宣言されていません (この関数で最初に使用) {g_key_dn(sequences 1 );}

g15_plugin_uinput.c:308:13: 警告: 関数 'g_key_up' の暗黙の宣言 [-Wimplicit-function-declaration] {g_key_up(sequences 1 );}

これは、たとえば、mkey_state = 0 の場合のキー番号 15 での私の望ましい結果です。 mkey_state が変化するコードの下部を参照してください)

    if((currentkeys & G15_KEY_G15) && !(lastkeys & G15_KEY_G15))
        {keydown(KEY_LEFTMETA);keydown(KEY_PAGEUP);}
    else if(!(currentkeys & G15_KEY_G15) && (lastkeys & G15_KEY_G15))
        {keyup(KEY_LEFTMETA);keydown(KEY_PAGEUP);}

同じシナリオですが、15ではなくキー1が必要です

    if((currentkeys & G15_KEY_G1) && !(lastkeys & G15_KEY_G1))
        {keydown(GKEY_OFFSET+1);}
    else if(!(currentkeys & G15_KEY_G1) && (lastkeys & G15_KEY_G1))
        {keyup(GKEY_OFFSET+1);}

私は何を間違えましたか、このコードをよりうまく機能させるにはどうすればよいですか?

ここにコードのもう少し完全なバージョンがあります(質問とは無関係ですが、コンテキストを提供する可能性があります)

このファイルは、ユーザー空間のキーボード ドライバー用の一種のプラグインです。私はすでに目的のコードを作成することができましたが、読みやすくするためにコードを単純化および短縮しようとしています。また、後で外部構成ファイルを作成したい場合にも備えています (したがって、毎回再コンパイルする必要はありません)。 「G」エクストラキーのバインディングを変更したい。)

4

1 に答える 1