Avoiding latches

// synthesis verilog_input_version verilog_2001
module top_module (
    input [15:0] scancode,
    output reg left,
    output reg down,
    output reg right,
    output reg up
);

    always @(*) begin
        // 初始化所有输出信号为0
        left = 1'b0;
        down = 1'b0;
        right = 1'b0;
        up = 1'b0;

        // 根据扫描码设置对应的输出信号
        case (scancode)
            16'hE06B: left = 1'b1;  // 左箭头键
            16'hE072: down = 1'b1;  // 向下箭头键
            16'hE074: right = 1'b1; // 右箭头键
            16'hE075: up = 1'b1;    // 向上箭头键
            // 其他扫描码不处理,保持输出为0
        endcase
    end

endmodule