aboutsummaryrefslogtreecommitdiffstats
path: root/manual/PRESENTATION_ExAdv/mulshift_map.v
blob: 4a3c2a06240abcc3b1931bc2a93704abb593e707 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
module MYMUL(A, B, Y);
    parameter WIDTH = 1;
    input [WIDTH-1:0] A, B;
    output reg [WIDTH-1:0] Y;

    parameter _TECHMAP_CONSTVAL_A_ = WIDTH'bx;
    parameter _TECHMAP_CONSTVAL_B_ = WIDTH'bx;

    reg _TECHMAP_FAIL_;
    wire [1023:0] _TECHMAP_DO_ = "proc; clean";

    integer i;
    always @* begin
    	_TECHMAP_FAIL_ <= 1;
        for (i = 0; i < WIDTH; i=i+1) begin
            if (_TECHMAP_CONSTVAL_A_ === WIDTH'd1 << i) begin
	        _TECHMAP_FAIL_ <= 0;
                Y <= B << i;
	    end
            if (_TECHMAP_CONSTVAL_B_ === WIDTH'd1 << i) begin
	        _TECHMAP_FAIL_ <= 0;
                Y <= A << i;
	    end
	end
    end
endmodule
= false; } uint8_t digit = ((hex >> (i*4)) & 0xF); if (digit == 0) { if (!onzerostart) { register_code(hex_to_keycode(digit)); unregister_code(hex_to_keycode(digit)); } } else { register_code(hex_to_keycode(digit)); unregister_code(hex_to_keycode(digit)); onzerostart = false; } } } __attribute__((weak)) void unicode_map_input_error() {} bool process_unicode_map(uint16_t keycode, keyrecord_t *record) { uint8_t input_mode = get_unicode_input_mode(); if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { const uint32_t* map = unicode_map; uint16_t index = keycode - QK_UNICODE_MAP; uint32_t code = pgm_read_dword(&map[index]); if (code > 0xFFFF && code <= 0x10ffff && input_mode == UC_OSX) { // Convert to UTF-16 surrogate pair code -= 0x10000; uint32_t lo = code & 0x3ff; uint32_t hi = (code & 0xffc00) >> 10; unicode_input_start(); register_hex32(hi + 0xd800); register_hex32(lo + 0xdc00); unicode_input_finish(); } else if ((code > 0x10ffff && input_mode == UC_OSX) || (code > 0xFFFFF && input_mode == UC_LNX)) { // when character is out of range supported by the OS unicode_map_input_error(); } else { unicode_input_start(); register_hex32(code); unicode_input_finish(); } } return true; }